Have fun with sci.dog

C#调用C++动态链接库dll时产生的两个问题

最近用C++打包了一个程序集,在C#中进一步调用时,出现了2个bug:

  1. 提示错误:试图加载格式不正确的程序。

    发现dll无法加载,说明C#无法识别或使用我自己的DLL,查找原因后,发现是系统编译环境目标平台与dll库文件的环境不一致
    解决方案:把我的DLL项目改成x64下编译,生成的环境与我的C#环境一致,问题得到解决。
  2. 另一个问题是,无法在dll中找到函数入口
    检查自己的导出函数和头文件的函数接口都没问题,我是通过采用模块定义(.def)文件声明的方法导出函数的,按道理应该没问题,再三检查发现,忘了在VS配置中添加(.def)文件,大意了。
    解决方案:在VS配置 Project > Properties > Linker > Input > Module Definition File 添加该DEF文件。

    慢工出细活,VS里的配置有时候真是稍微疏忽一点就出错了。哈哈
赞(2)
未经允许不得转载:SciDog » C#调用C++动态链接库dll时产生的两个问题

评论 抢沙发