LNK 2028 - 2019 / 托管和非托管 C++ ? (对比 2008 年)

发布于 2024-09-07 07:48:50 字数 872 浏览 5 评论 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 有效,测试给出 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

久夏青 2024-09-14 07:48:50

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

That was because of a linker problem linking to different folders containing the same files.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文