我已经花了好几个小时才能让protobuf工作,但感觉我已经尝试了所有尝试的东西,但我仍然无法在没有这些错误的情况下进行链接:
LNK2019 unresolved external symbol "public: __thiscall tutorial::Person_PhoneNumber::Person_PhoneNumber(void)" (??0Person_PhoneNumber@tutorial@@QAE@XZ) referenced in function "public: static class tutorial::Person_PhoneNumber * __cdecl google::protobuf::Arena::Create<class tutorial::Person_PhoneNumber>(class google::protobuf::Arena *)" (??$Create@VPerson_PhoneNumber@tutorial@@@Arena@protobuf@google@@SAPAVPerson_PhoneNumber@tutorial@@PAV012@@Z)
LNK2019 unresolved external symbol "public: __thiscall tutorial::Person::Person(void)" (??0Person@tutorial@@QAE@XZ) referenced in function "public: static class tutorial::Person * __cdecl google::protobuf::Arena::Create<class tutorial::Person>(class google::protobuf::Arena *)" (??$Create@VPerson@tutorial@@@Arena@protobuf@google@@SAPAVPerson@tutorial@@PAV012@@Z)
LNK2019 unresolved external symbol "public: __thiscall tutorial::AddressBook::AddressBook(void)" (??0AddressBook@tutorial@@QAE@XZ) referenced in function _main
LNK2019 unresolved external symbol "public: virtual __thiscall tutorial::AddressBook::~AddressBook(void)" (??1AddressBook@tutorial@@UAE@XZ) referenced in function _main
我正在使用MS Visual Studio 2015.包含库和头文件 (如果我重命名.lib文件,它会抱怨无法找到它。)
我已经尝试了2.6.1和3.0.0b3(protoc和libprotobuf,两者都是自编译的而不是)。我自己编译了protoc并用它编译了示例.proto文件,它仍然无法编译protobuf附带的示例。我已经在调试和发布模式下编译了我自己的项目和protobuf,并且我已经将protobuf自己的测试项目中的每个设置或多或少地复制到了我自己的项目中,并且它没有编译
感觉就像我错过了一些超级简单的东西,但我用谷歌搜索了几个小时,我无法找出我做错了什么。
即使是像下面那样的超级简单文件也会产生相同的错误。
#include "example.pb.h"
int main()
{
GOOGLE_PROTOBUF_VERIFY_VERSION;
Example ex;
}
还有什么可以做/尝试?
答案 0 :(得分:1)
当您在protoc
上运行example.proto
时,会生成两个文件:example.pb.h
和example.pb.cc
。您需要将example.pb.cc
编译到您的程序中。