c++中的协议缓冲区和错误LNK2019:未解析的外部符号

Protobuffers in c++ and error LNK2019: unresolved external symbol

本文关键字:外部 符号 错误 协议 缓冲区 c++ LNK2019      更新时间:2023-10-16

我是c++和visual studio 2012的新手,所以问题可能出在屏幕和椅子之间。我执行了以下步骤;

  1. 我用optimize_for=LITE_RUNTIME选项制作了一个简单的原型文件
  2. 使用protoc创建匹配的h和c文件
  3. 编译库libprotobuf-lite.lib
  4. 创建了一个新的控制台Visual Studio 2012项目
  5. 复制了我的单个源文件所在的libprotobuf-lite.lib
  6. 创建了一个名为protobuffers的新文件夹
  7. 将c、h和google目录从protobuffers src目录复制到protobuffers文件夹
  8. 添加protobuffers文件夹作为附加Include目录
  9. 通过附加依赖项将库文件添加到链接器
  10. 编译了以下源文件;

    #include <iostream>
    #include "protobuffersgenome.pb.h"
    int main()
    {
    genomeMessage::Genome genome;
    return 0;
    }
    
  11. 卡住了。。。我得到以下错误;

    1>Source.obj : error LNK2019: unresolved external symbol "public: __cdecl genomeMessage::Genome::Genome(void)" (??0Genome@genomeMessage@@QEAA@XZ) referenced in function main
    1>Source.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl genomeMessage::Genome::~Genome(void)" (??1Genome@genomeMessage@@UEAA@XZ) referenced in function main
    1>C:Projectstestprotox64Debugtestproto.exe : fatal error LNK1120: 2 unresolved externals
    

所以我知道它不是一个丢失的lib文件,因为如果我移动lib文件,链接器会抱怨找不到它。问题是我不知道如何修复它。。。任何人

根据此消息:

1>Source.obj : error LNK2019: unresolved external symbol "public: __cdecl genomeMessage::Genome::Genome(void)" (??0Genome@genomeMessage@@QEAA@XZ) referenced in function main
1>Source.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl genomeMessage::Genome::~Genome(void)" (??1Genome@genomeMessage@@UEAA@XZ) referenced in function main

声明CCD_ 1和CCD_ 2的源文件不是项目的一部分。

特别是,听起来您还没有将genome.pb.cc文件(由Protocol Buffers编译器创建)添加到项目中。