温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C# 调用C++接口

发布时间:2020-06-03 17:22:06 来源:网络 阅读:2051 作者:fengyuzaitu 栏目:系统运维

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才行,否则运行期会出错


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI