C#调用Dll动态库问题 BSTRCC#C++DLL 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本帖最后由 bdmh 于 2014-07-23 16:37:59 编辑 如果改了stringbuilder还有问题,DllImport相关的属性最好都显式说明下,例如:[DllImport("mydll", EntryPoint = "MyFunction", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] http://blog.csdn.net/jiangxinyu/article/details/8059543 参考, C# 里面的 string 是 unicode 的,你这里写明了要 CharSet = CharSet.Ansi, 调用肯定失败。最好的 办法是把 Charset 改成 unicode 的;如果实在不行可以用 Marshal.StringToHGlobalAnsi 把 unicode string 转 ansi 1. CharSet要根据dll内部的约定来定,并不是全是Unicode2. 只是给个例子说明下dllimport的相关参数,没有说是标准答案 试过了都不行; [DllImport("SendWineEV.dll", CharSet=CharSet.Unicode)][return: MarshalAs(UnmanagedType.Bool )]public static extern bool EvideoOpenRoom( [MarshalAs(UnmanagedType.BStr)] string RoomIP, [MarshalAs(UnmanagedType.BStr)] string ServerIP, int DataLen);后来这样 [MarshalAs(UnmanagedType.BStr)] string 试了一下 可以了,可能主要是传入的字符类型不符。 第三方控件gridcontrol cardview 怎么设置上下滚动条? 关于Thread中显示图片的一个小问题 [讨论]C/S结构的OA,采用什么结构? 小弟 新手 求CS开发中文件下载的 代码 求助论坛设计源代码 C#中socket怎么接收一个超长的字节数组 Socket编程的简单问题。 求助通过循环的方法给一组label的属性发生改变???? 请教一个简单的问题,急! 关于MemoryCache的使用问题 c# winform表格标题行添加按钮控制表格列的显示 窗体程序打包第三方工具有哪些?
DllImport相关的属性最好都显式说明下,例如:[DllImport("mydll", EntryPoint = "MyFunction", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
C# 里面的 string 是 unicode 的,你这里写明了要 CharSet = CharSet.Ansi, 调用肯定失败。
最好的 办法是把 Charset 改成 unicode 的;如果实在不行可以用 Marshal.StringToHGlobalAnsi 把 unicode string 转 ansi
2. 只是给个例子说明下dllimport的相关参数,没有说是标准答案
试过了都不行;
[DllImport("SendWineEV.dll", CharSet=CharSet.Unicode)]
[return: MarshalAs(UnmanagedType.Bool )]
public static extern bool EvideoOpenRoom( [MarshalAs(UnmanagedType.BStr)] string RoomIP, [MarshalAs(UnmanagedType.BStr)] string ServerIP, int DataLen);后来这样 [MarshalAs(UnmanagedType.BStr)] string 试了一下 可以了,可能主要是传入的字符类型不符。