【27】C#调用自己写的C++ dll时出错,Debug Assertion Failed! Program: ... dllFile:minkernelicrts)ucrtisrcappcrt
C++动态库与C#调用时出现堆内存调试断言错误,原因是运行库设置不匹配。当C++项目使用''/MTd''(静态链接调试运行时库)编译时,会导致C#调用LineProApi.dll时出现''Debug Assertion Failed"错误。解决方法是将C++项目的运行库设置改为"/MDd"(动态链接调试运行时库),使运行时库与调用方兼容。该问题常见于跨语言调用时运行库版本冲突,调整此设置后动态库调
·
文章目录
自己用C++ 项目,封装成dll动态库,动态库导出命名为 LineProApi.dll;
C#调用时时出错 “
Debug Assertion Failed!...dllFile:minkernelicrts)ucrtisrcappcrt\heapidebug ”
Debug Assertion Failed!
Program: D:\GxTest\P0056 B2\binLineProApi.dllFile:minkernelicrts)ucrtisrcappcrt\heapidebug heap.cppLine: 996
Expression: acrt first block == header
For information on how your program can cause an assertionfailure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
经过反复检查发现,项目属性,运行库设置问题。
将运行库“多线程调试(/MTd)”改为 “多线程调试DLL(MDd)”,调用运行正常


更多推荐


所有评论(0)