似乎链接器缺少其他项目的一些中间信息。我真的不记得“引用”本机项目是否确实自动设置了链接阶段..我真的觉得你说“引用”很奇怪..对我来说“引用”这个词有点局限于.Net的世界程序集,因为 VS 中的“添加引用”,这使得没有人关心包含/库,并且由于显而易见的原因,本机 dll 无法使用 IIRC。如果您的意思是您手动配置了链接器选项,请原谅我:)
如果不是 - 请解释您是如何引用本机模块的。
无论哪种方式,如果“引用”更早工作,如果您重命名项目,文件名可能会不同步,可能文件时间戳有点偏离,VS 没有注意到新版本。简单的清除和重建有时会神奇地帮助。如果没有,您可以尝试手动删除 Debug/Release/Bin/Obj 文件夹并尝试重新构建。
要尝试诊断,第一步是查看链接器作为输入给出的内容:在 C++/CLI 项目的项目属性页中,检查 Linker->CommandLine 并查看名称类似于“myOtherNativeCppProjectName.lib”的文件在那里可见。如果不是 - 这就是问题所在,只需将其添加到 previos 链接器页面上的链接器选项中,或重新添加引用,然后清理、重建并查看会发生什么。
多说一句,您必须发布整个错误消息 - 此错误消息在函数名称处被截断,因此很难判断它是您的函数还是某些缺少的库模块。随着编译阶段成功并且问题出在链接 - 您是否 100% 确定您已实现该功能?我的意思是,正确的 .h 确实提供给了 C++/CLI 项目,但是正确的 .cpp 文件是否与本机中包含的 .h 文件匹配?忘记添加一个文件也很常见。或者忘记实例化模板。或者在 .H 和 .CPP 之间输入错误的类/函数名称。