使用c++编写了调用opencv的dll,在C#项目中调用
在开发系统中正常运行,在其他的系统中运行总是报错
无法加载dll, 找不到指定的模块。hresult:0x8007007e
考虑过是否32位程序在64位系统中运行的问题,但试过使用64位编译,仍然报错。
后来了解到,c#和c++对dll的报错方式不同。c++在调用 A.dll报错时,会具体的报错A.dll需要的B.dll c.dll缺失,但C#只会报错“无法加载A.dll”。具体缺失什么文件要自己查找
使用depends.exe去分析A.dll,发现依赖dll如下
在开发系统的
C:\Windows\System32
C:\Windows\SysWOW64
中,查找应用windows环境中缺少的dll,拷贝过去
在应用环境下即可正常运行。