gpt4 book ai didi

c++ - 从 CLI C++ 项目引用非托管 C++ 项目

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:07 24 4
gpt4 key购买 nike

我正在尝试创建一个 CLI DLL 以在我的非托管 C++ 可执行项目和另一个托管项目之间建立桥梁,所有这些都在一个 Visual Studio 解决方案中。

不过,我之前遇到的问题是:我无法在我的新 CLI 项目中链接引用非托管 C++ 项目。我包含了所需的 .h 文件,并在 CLI 项目中添加了对非托管项目的引用。编译成功,但出现以前从未见过的链接错误:

Error 2
error LNK2028: unresolved token (0A000088) "public: __cdecl ...

我在项目属性中添加了引用并包含了 .h 文件。

谢谢

最佳答案

似乎链接器缺少其他项目的一些中间信息。我真的不记得“引用” native 项目是否会自动设置链接阶段。实际上我觉得你说“引用”很奇怪。对我来说,“引用”这个词有点局限于 .Net 的世界程序集,因为 VS 中的“添加引用”,这使得没有人关心包含/库,并且由于显而易见的原因,哪些 IIRC 对于 native dll 不可用。如果您的意思是您手动配置了链接器选项,请原谅我:)

如果不是 - 请解释您是如何引用 native 模块的。

无论哪种方式,如果“引用”更早工作,如果您重命名项目,文件名可能会不同步,文件时间戳可能有点偏离并且 VS 没有注意到新版本。有时简单的清除和重建神奇地帮助。如果没有,您可以尝试手动删除 Debug/Release/Bin/Obj 文件夹,然后重新构建。

要尝试诊断,第一步是查看链接器作为输入给出的内容:在 C++/CLI 项目的项目属性页中,检查 Linker->CommandLine 并查看是否有名称类似于“myOtherNativeCppProjectName”的文件.lib”在那里可见。如果不是 - 这就是问题所在,只需将其添加到 previos 链接器页面的链接器选项中,或重新添加引用,然后清理、重建并查看会发生什么。

再多说一句,您必须发布整个错误消息 - 这个错误消息在函数名称处被截断,因此很难判断它是您的函数还是某些缺少的库模块。由于编译阶段成功并且问题出在链接 - 您是否 100% 确定已实现该功能?我的意思是,确实向 C++/CLI 项目提供了正确的 .h,但是正确的 .cpp 文件是否与 native 中包含的 .h 文件相匹配?忘记添加一个文件也很常见。或者忘记实例化模板。或者在 .H 和 .CPP 之间输入错误的类/函数名称。

关于c++ - 从 CLI C++ 项目引用非托管 C++ 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12490403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com