0

在我的应用程序中,我有一个 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

谢谢@Michael Burr,我指的是 .lib 文件的陈旧副本。我用新版本替换了它,一切都很好。

于 2013-05-16T10:11:18.267 回答
0

好吧,仅仅改变声明是不够的。您还必须更改该函数的定义并重新编译 DLL。

如果您只是更改了声明并保持定义不变,那么您实际上为一个实际上并不存在的函数创建了一个新声明。DLL 仍然包含带有原始参数集的原始函数,现在与您的新声明完全无关。这就是链接器通过上述错误告诉您的内容。

于 2013-05-16T05:18:43.093 回答