C# 调用C++接口
2017-08-11 16:50
651 查看
1 System.DllNotFoundException”类型的未经处理的异常在 test.exe 中发生 其他信息: 无法加载 DLL“DLL/AR_ALGORITHM.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
该问题的原因是程序无法找到AR_ALGORITHM.dll,通常程序在bin目录下,system32目录下,和程序运行所处的当前目录查找
2“System.EntryPointNotFoundException”类型的未经处理的异常在 test.exe 中发生
其他信息: 无法在 DLL“../../../DLL/AR_ALGORITHM.dll”中找到名为“WGStoGCJ”的入口点。
在C++的函数声明中指定了WINAPI,而在C#重新定义相应的调用却指定了Cdecl,实际上应该指定Winapi,或者简单的方式是什么也不用指定
[DllImport("../../../DLL/AR_ALGORITHM.dll", EntryPoint = "WGStoGCJ", CallingConvention = CallingConvention.Cdecl)]
简单正确
[DllImport("../../../DLL/AR_ALGORITHM.dll")]
那从应用上考虑,注明WINAPI和不注明WINAPI的函数在使用用上有什么差别或注意的地方?
那就是系统和不是系统函数的区别
从应用上讲,区别不是很大,只要使用的声明是正确的。
例如你写了一个库函数用的是WINAPI声明的,而别人调用的时候用的声明也要是WINAPI才行,否则运行期会出错
该问题的原因是程序无法找到AR_ALGORITHM.dll,通常程序在bin目录下,system32目录下,和程序运行所处的当前目录查找
2“System.EntryPointNotFoundException”类型的未经处理的异常在 test.exe 中发生
其他信息: 无法在 DLL“../../../DLL/AR_ALGORITHM.dll”中找到名为“WGStoGCJ”的入口点。
在C++的函数声明中指定了WINAPI,而在C#重新定义相应的调用却指定了Cdecl,实际上应该指定Winapi,或者简单的方式是什么也不用指定
[DllImport("../../../DLL/AR_ALGORITHM.dll", EntryPoint = "WGStoGCJ", CallingConvention = CallingConvention.Cdecl)]
简单正确
[DllImport("../../../DLL/AR_ALGORITHM.dll")]
那从应用上考虑,注明WINAPI和不注明WINAPI的函数在使用用上有什么差别或注意的地方?
那就是系统和不是系统函数的区别
从应用上讲,区别不是很大,只要使用的声明是正确的。
例如你写了一个库函数用的是WINAPI声明的,而别人调用的时候用的声明也要是WINAPI才行,否则运行期会出错
相关文章推荐
- C#调用C++接口返回字符串的做法
- c#调用c++dll接口及回调函数
- C#调用C++的dll时,c++ dll函数接口中尽量不要用bool返回类型
- C#调用原生C++ COM对象(在C++中实现C#的接口)
- C# 如何调用 C++ DLL中的函数接口和回调函数
- C# WebServices接口提供C++调用的数据包问题
- C#调用C++动态库接口
- C# 调用C++ DLL 返回类型为字符的接口 出现异常 解决办法
- C# 调用C++dll中接口,返回const char*
- 如何用ATL写一个C++的COM组件(C#轻松调用C/C++接口)
- C++调用C#接口dll,对dll进行注册
- AE C#与C++接口调用差异总结
- C#调用C++接口提示找不到指定的模块解决方法,本机正常
- C#调用C++接口返回字符串的做法
- JNI之JAVA调用C++接口
- C#调用C++dll 传出字符串
- C++调用C#之C++DLL调用C# COM控件
- C++数据类型与C#对应关系 c#调用WINDWOS API时,非常有用
- c#、C++等调用Dll方法(未完)
- C#调用C++ dll 总结 内含(opencv)