0

rapidjson::Document結果をリンク エラーにコピー:

エラー 5 エラー LNK2019: 未解決の外部シンボル "private: __thiscall rapidjson::GenericValue,class rapidjson::MemoryPoolAllocator >::GenericValue,class rapidjson::MemoryPoolAllocator >(class rapidjson::GenericValue,class rapidjson::MemoryPoolAllocator > const &)" (??0?$GenericValue@U?$UTF8@D@rapidjson@@V?$MemoryPoolAllocator@VCrtAllocator@rapidjson@@@2@@rapidjson@@AAE@ABV01@@Z) 関数で参照される「public: __thiscall rapidjson」 ::GenericDocument,class rapidjson::MemoryPoolAllocator >::GenericDocument,class rapidjson::MemoryPoolAllocator >(class rapidjson::GenericDocument,class rapidjson::MemoryPoolAllocator > const &)" (??0?$GenericDocument@U?$UTF8@ D@rapidjson@@V?$MemoryPoolAllocator@VCrtAllocator@rapidjson@@@2@@rapidjson@@QAE@ABV01@@Z) C:\Layer.obj

コピー コンストラクターを持たないrapidjson::Document子であることがわかります。rapidjson::GenericValue

    //! Copy constructor is not permitted.
private:
    GenericValue(const GenericValue& rhs);

コンパイラ エラーではなくリンカ エラーが発生するのはなぜでしょうか。C++ は何をしようとしていますか?

私は MVC 2013 とrapidjson 0.11を使用しています。ここにも同様のスレッドがあります:

  1. LNK2019: Rapidjson を使用した「未解決の外部シンボル」
  2. Rapidjson は `rapidjson::Document` をコピーできません
4

2 に答える 2

1

あなたは自分の質問に部分的に答えました:

    //! Copy constructor is not permitted.
private:
    GenericValue(const GenericValue& rhs);

すべてのクラスには、暗黙のコピー コンストラクターがあります

このコードの作成者は、定義なしで宣言することにより、暗黙的なコピー コンストラクターを無効にしようとしています。宣言により、このコードはコンパイルできます。定義がないとリンクできないため、エラーが表示されます。

より具体的には、表示されるエラー メッセージは次のように変換されます。表示されるテキストは、それ自体がはるかに具体的ですが、明らかに読みにくいものです。

あなたのコード (おそらく Rapidjson を使用するもの) には、GenericDocument のコピー コンストラクターへの偶発的または意図的な呼び出しが存在し、それがこの問題全体を引き起こしています。私の場合、GenericDocument をパラメーターとして関数に渡していました。同じことをしている場合は、参照によってドキュメントを渡す必要があるため、コピーされません。

于 2015-08-06T22:16:38.807 に答える
0

エラーは、関数が宣言されているが実装されていないことを意味します。したがって、いくつかの関数を宣言する somes .h が必要ですが、Rapidjson のどこにも実装されていません。

于 2015-03-31T08:00:10.613 に答える