C# 调用C++接口

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





     本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1955507,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值