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

标签 c++ visual-studio-2010 visual-studio compilation

我正在尝试创建一个 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”在那里可见。如果不是 - 这就是问题所在,只需将其添加到以前的链接器页面上的链接器选项中,或者重新添加引用,然后清理、重建并看看会发生什么。

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

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

相关文章:

c++ - 如何使用 CMake 通过命令行定义 C++ 预处理器宏?

c++ - 将按钮界面添加到我的控制台应用程序

visual-studio - 用于模拟 Eclipse 的 "Open Type"或 "Open Resource"键盘访问的 Visual Studio 插件

关于时间间隔的 C++ 算法

c++ - vector 中重复的 unique_ptr 项的所有权错误

visual-studio-2010 - 如何在文件上设置构建操作-属性窗口中不显示高级属性

c# - 为什么我的 Resharper NUnit session 停止工作,但在 Debug模式下工作

visual-studio - 为什么使用 NuGet 而不是直接在我的计算机上安装库

c# - 包含 atlbase.h header 时应用程序崩溃

c++ - 使用 C++ 和 DDS 编写的 CMAKE 编译代码