LNK 2028 - 2019 / 托管和非托管 C++ ? (对比 2008 年)
我正在尝试将开源库链接到我的项目之一。该库是非托管的(名为 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 有效,测试给出 2028 错误。
我比较了我的项目的 .obj 和创建的 .lib,对于 lib 有:
save_nodes@tetgenio@@QAEXPAD@Z
但在 .obj 中是:
save_nodes@tetgenio@@$$FQAEXPBD@Z in the .obj
看来它们不一样。
一切都是用 /clr 编译的。我尝试创建 .lib 和 .dll,无论哪种方式都具有相同的结果。
I am trying to link an open-source library to one of my project. The library is unmanaged (named Tetgen) and my project is in managed C++.
My project recognizes the header and can use the functions defined in it. But I get a 2028 error each time it wants to access to some methods defined in the .cpp:
error LNK2028: unresolved token (0A000E20) "public: void __thiscall tetgenio::save_nodes(char const *)" (?save_nodes@tetgenio@@$$FQAEXPBD@Z) referenced in function "public: virtual bool __thiscall ForwardModelingPlugin::CustomMeshVol3D::tesselate(void)" (?tesselate@CustomMeshVol3D@ForwardModelingPlugin@@$$FUAE_NXZ)
I have tried to create a test function:
int tetgenio::Test(int i) {
return i;
}
...and another Testbis function, defined in the header. Testbis works, Test gives a 2028 error.
I have compared the .obj of my project and the .lib created, and for the lib there is:
save_nodes@tetgenio@@QAEXPAD@Z
But in the .obj it is:
save_nodes@tetgenio@@$FQAEXPBD@Z in the .obj
It appears they are not the same.
Everything is compiled with /clr. I've tried creating both a .lib and a .dll, with same results either way.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是因为链接器在链接到包含相同文件的不同文件夹时出现问题。
That was because of a linker problem linking to different folders containing the same files.