我正在构建一个项目和一个 Dll。
Dll 必须支持 native 代码,所以我将其声明为/clr。 我的项目最初也是一个/clr 项目,一切都很好。但是我想包括一些 NUnit 测试,所以我不得不将我的主项目从/clr 切换到/clr:pure。
一切仍然可以编译,但任何 Dll 调用都会产生运行时错误。当我恢复到/clr 时一切正常
在我的 Dll 中,导出的函数声明如下:
#define DllExport __declspec( dllexport )
DllExport bool DisplayScan(bool bShow, bool bAllPasses) { }
我还制作了一个包含所有导出函数真实名称的 .def 文件
LIBRARY "Controller"
EXPORTS
DisplayScan
在我的主项目中,我的导入声明如下:
#define _DllImport [DllImport("Controller.dll", CallingConvention = CallingConvention::Cdecl)] static
_DllImport bool DisplayScan(bool bShow, bool bAllPasses)
有人遇到过这样的问题吗?
最佳答案
好的,现在一切正常
事实上,它从一开始就在工作。
道德:不要试图将 char* 转换为 std::string
奇怪的是:它在/clr 中没问题,直到您从函数返回。它在/clr:pure 中立即崩溃
关于c++ - 使用来自/clr :pure projects 的混合 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/291559/