4

私はC ++とVisual Studio 2012が初めてなので、おそらく問題はスクリーンと椅子の間にあります. 次の手順を実行しました。

  1. オプションoptimize_for = LITE_RUNTIMEを使用して簡単なprotoファイルを作成しました
  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 フォルダーを追加のインクルード ディレクトリとして追加しました
  9. 追加の依存関係を使用して、ライブラリ ファイルをリンカーに追加しました。
  10. 次のソース ファイルをコンパイルしました。

    #include <iostream>
    #include "protobuffers\genome.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:\Projects\testproto\x64\Debug\testproto.exe : fatal error LNK1120: 2 unresolved externals
    

libファイルを移動すると、リンカが見つからないと文句を言うので、libファイルが見つからないことはわかっています。問題は、これを修正する方法がわからないことです...誰か?

4

1 に答える 1

6

このメッセージによると:

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

genomeMessage::Genome::Genome(void)を宣言しgenomeMessage::Genome::~Genome(void)、プロジェクトの一部ではないソース ファイル。

特に、genome.pb.ccファイル (Protocol Buffers コンパイラによって作成されたもの) をプロジェクトに追加していないようです。

于 2012-11-15T14:09:44.310 に答える