我正在尝试将一个开源库链接到我的一个项目。该库是非托管的(名为 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,无论哪种方式都具有相同的结果。