c++ - 使用来自/clr :pure projects 的混合 DLL

标签 c++ dll visual-studio-2005 clr mixed-mode

我正在构建一个项目和一个 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/

相关文章:

c++ - 错误 C4430 : missing type specifier - int assumed. 注意:C++ 不支持我的构造函数的默认整数

c++ - crt0 是否加载 msvcrt.dll?

c# - EXE的大小会影响执行速度吗?

debugging - 无法附加到进程

c++ - Valgrind 在 std::make_unique 中显示内存泄漏

C++ Valgrind 无效删除动态数组

具有多个语句的 C++ 宏

delphi - AnsiString 从 Delphi 2009 应用程序中的 Delphi 2007 DLL 返回值

visual-studio - 错误MSB3073 : copy/d “C:\LOANAPP\UX\UserControls\*.css” “C:\LOANAPP\UX\GetQuotations\ThirdPartyOperator\CSS” "exited with code 1

visual-studio-2008 - 在TFS下重命名VS.net中包含的项目文件夹