我正在与 Dll 一起构建一个项目。
Dll 必须支持本机代码,因此我将其声明为 /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)
有人遇到过这样的问题吗?