C#加载含Euresys EGrabber.h的C++ DLL无报错却异常,求助解决
C#调用含Euresys EGrabber.h的C/C++ DLL加载异常排查与解决
问题背景
- C#程序导入C/C++编写的DLL时,仅包含3个函数的小型测试DLL可正常工作,但整合完整代码后出现异常
- 异常表现:DLL已加载但未完成加载流程,无法调用导入的函数,程序停滞且C#无任何报错输出
- 初步排查确认:引入Euresys专有头文件
EGrabber.h后触发该异常
排查过程
- 进一步定位问题根源:异常由某CPP文件中声明的、类型来自
EGrabber.h的全局变量导致 - 调整测试:将该变量移至导出函数内部声明并使用,此时DLL可正常加载,但调用该特定函数时程序崩溃
解决方法
将该变量声明为(void *)类型,并在导出函数内部执行new操作初始化,目前可正常使用该变量及相关功能
内容的提问来源于stack exchange,提问作者ggeof
相关产品推荐
相关产品推荐

