0

我正在尝试将一个开源库链接到我的一个项目。该库是非托管的(名为 Tetgen),我的项目是托管 C++。

我的项目可以识别标题并可以使用其中定义的功能。但是每次它想要访问.cpp中定义的某些方法时,我都会收到2028错误:

错误 LNK2028:未解析的令牌 (0A000E20) “public: void __thiscall tetgenio::save_nodes(char const *)” (?save_nodes@tetgenio@@$$FQAEXPBD@Z) 在函数“public: virtual bool __thiscall ForwardModelingPlugin::CustomMeshVol3D: :tesselate(void)" (?tesselate@CustomMeshVol3D@ForwardModelingPlugin@@$$FUAE_NXZ)

我试图创建一个测试功能:

int tetgenio::Test(int i) {  
    return i;  
}

...和另一个 Testbis 函数,在标题中定义。Testbis 有效,Test 给出 2028 错误。

我比较了我的项目的 .obj 和创建的 .lib,对于 lib 有:

save_nodes@tetgenio@@QAEXPAD@Z

但在 .obj 中是:

save_nodes@tetgenio@@$$FQAEXPBD@Z in the .obj

看来他们是不一样的。

一切都是用 /clr 编译的。我已经尝试创建一个 .lib 和一个 .dll,无论哪种方式都具有相同的结果。

4

1 回答 1

0

这是因为链接到包含相同文件的不同文件夹的链接器问题。

于 2010-07-07T14:56:56.650 回答