0

私のアプリケーションでは、2 つのベクトルを取る関数を公開する dll があります。

static int myFunc( vector<double> vec1, vector<double> &vec2 );

この宣言を

static int myFunc( vector<double> &vec1, vector<double> &vec2 );

次のようなリンカ エラーが表示されます。

error LNK2019: unresolved external symbol "__declspec(dllimport) public: static int __cdecl myFunctions::myFunc(class std::vector<double,class std::allocator<double> > &,class std::vector<double,class std::allocator<double> > &)" (__imp_?myFunc@myFunctions@@SAHAAV?$vector@NV?$allocator@N@std@@@std@@0@Z) referenced in function "public: void __thiscall MainWindow::modelMeanCurve(void)" (?modelMeanCurve@MainWindow@@QAEXXZ)

この動作はなぜですか?また、最初の引数への参照も渡すことができるように、このエラーを解決するにはどうすればよいですか?

ありがとう、ラケッシュ。

4

2 に答える 2

0

さて、宣言を変更するだけでは十分ではありません。また、その関数の定義を変更し、DLL を再コンパイルする必要があります。

単に宣言を変更し、定義を変更しないままにしておくと、実質的に、実際には存在しない関数の新しい宣言を作成したことになります。DLL には、元のパラメーター セットを持つ元の関数がまだ含まれていますが、これは新しい宣言とはまったく関係ありません。これは、リンカが上記のエラーを通じて伝えていることです。

于 2013-05-16T05:18:43.093 に答える
0

ありがとう@Michael Burr、.libファイルの古いコピーを参照していました。これを新しいバージョンに置き換えたところ、すべて正常に構築されました。

于 2013-05-16T10:11:18.267 に答える