您的位置:首页 > 编程语言 > C语言/C++

C#调用C++的dll时,c++ dll函数接口中尽量不要用bool返回类型

2014-05-29 16:37 323 查看
做一个C++的dll,用c#来调用,之前的函数定义为

c++ 中声明为:

SECURITYLOGIN_API bool __stdcall SecurityUser_Check(int id,

unsigned char type,TCHAR * originalPwd, Fn_SecruityEncrypt fn_Encrypt,

SecurityUserCheckResult & ret);

c#中对应声明为:

[DllImport(@"SecurityLogin.dll", EntryPoint = "SecurityUser_Check", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]

private static extern bool SecurityUser_Check(int id, byte type,

String originalPwd, Fn_SecruityEncrypt fn_Encrypt,

ref SecurityUserCheckResult ret);

在正两种声明情况下,通过c#的接口间接调用c++函数时,c++的返回的bool值不能正确的返回到c#中,例如c++中返回是false,而在c#调用后返回的结果却是true,

我个人认为可能是托管与非托管在bool类型上的内存占位宽度不通,但是没有深究过。

所以需要将两边的返回值类型都改为int,那么c++和c#调用后的返回值是一致的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: