0

私はこれを過去数日間見てきましたが、成功しませんでした。Qtでグラフィックアプリケーションを作成しようとしています。私の LNK2019 は、実装されていないコンストラクターから発生する必要があるようです。

main.obj:-1: error: LNK2019: unresolved external symbol "public: __cdecl            ArbObject::ArbObject(class Table *,int *,int,int,int,int,int)" (??
0ArbObject@@QEAA@PEAVTable@@PEAHHHHHH@Z) referenced in function "class std::vector<class ArbObject *,class std::allocator<class ArbObject *> > __cdecl 
createArbObjects(class QList<class QStringList> &,class Table *,int &)" (?createArbObjects@@YA?AV?$vector@PEAVArbObject@@V?$allocator@PEAVArbObject@@@std@@@std@@AEAV?   
$QList@VQStringList@@@@PEAVTable@@AEAH@Z)

ただし、コンストラクターは存在し、適切な .cpp ファイルに実装されています。

.h file has this:
 ArbObject(Table* tr, int* rgb, int t, int xpos, int ypos, int w, int h);

.cpp file has this:
ArbObject::ArbObject(Table* tr, int* rgb, int t, int xpos, int ypos, int w, int h)
    : QWidget((QWidget*)tr), obj_typ(t), xpos(xpos), ypos(ypos),wid(w), hei(h)
{
...
}

思いつくものはすべて入れました。これは Windows マシンでは機能しませんが、Mac では完全に機能します。私の質問は、どのような種類の依存関係がこの種の問題を引き起こす可能性があるのですか? 問題を解決するために他にどのような手段を検討できますか?

  • コンパイラベースですか?MSVC 対 Clang
  • 両方ともリンク プロセスに異なるファイルを含めてください。したがって、あるプラットフォームでは別のプラットフォームでは機能しない可能性があります。

編集:修正

答えを見てください!

4

1 に答える 1

-1

実際、コンパイラ エラーを特定したのは、コードを構造化した方法であることがわかりました。正確な理由はわかりませんが、コードの構造が原因である可能性があります。

以前、関連する作成関数を含む parser.h ファイルを main.cpp ファイルに含めました。私の推論は、parser.h ファイルが main.cpp ファイルの先頭に含まれるというものでした。parser.h は本質的に、長い関数を見えないようにするための場所でした。

ここで、arbobjects、balls などを作成するメソッドを持つ、解析/作成用の別のクラスを作成します。メイン関数は、パーサーのインスタンスを作成し、それらのメソッドを使用します。これにより、リンカーエラーなしでコンパイルされます

于 2013-05-08T23:28:32.387 に答える