繁体   English   中英

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

[英]Referencing an unmanaged C++ Project From a CLI C++ Project

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

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

错误2
错误LNK2028:无法解析的令牌(0A000088)“ public:__cdecl ...

我在项目属性中添加了参考,并包含了.h文件。

谢谢

似乎链接程序缺少有关另一个项目的一些中间信息。 我真的不记得是否“引用”本地项目确实会自动设置链接阶段。.我实际上发现您说“引用”很奇怪。对我来说,“引用”一词在一定程度上仅限于.Net。程序集由于VS中的“添加引用”而引起,它没有人在乎包含/库,并且由于明显的原因,哪些IIRC对于本机dll不可用。 如果您是手动配置链接器选项,请原谅:)

如果不是,请说明您如何引用本机模块。

不管哪种方式,如果“引用”工作更早,如果您重命名了项目,文件名可能会不同步,例如文件时间戳可能有点过时,而VS却没有注意到新版本。.简单的Clear&Rebuild有时会起到神奇的作用。 如果没有,您可以尝试手动删除Debug / Release / Bin / Obj文件夹,然后尝试重新构建。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM