C++封装的dll,char类型的出参C#中如何接收 150
如图是我用C++写的dll文件中给参数赋值下图是我在C#中调用方法然后运行接收到的却是乱码哪位大哥帮忙看一下是哪里的问题谢谢了跪求...
如图是我用C++写的dll文件中给参数赋值
下图是我在C#中调用方法
然后运行接收到的却是乱码
哪位大哥帮忙看一下是哪里的问题 谢谢了 跪求 展开
下图是我在C#中调用方法
然后运行接收到的却是乱码
哪位大哥帮忙看一下是哪里的问题 谢谢了 跪求 展开
4个回答
展开全部
网络搜索不到?
C#用非托管资源弄弄看看
可以用不安全代码吗?char*
out string 都改成 [Out]StringBuilder
CharSet=CharSet.Ansi, CallingConvention=CallingConvention.Cdecl / stdcall
StringBuilder sb = new StringBuilder(16); // 16替换为你所需要的容量,也就是先申请好内存空间
再调用该函数,传入本参数
C#用非托管资源弄弄看看
可以用不安全代码吗?char*
out string 都改成 [Out]StringBuilder
CharSet=CharSet.Ansi, CallingConvention=CallingConvention.Cdecl / stdcall
StringBuilder sb = new StringBuilder(16); // 16替换为你所需要的容量,也就是先申请好内存空间
再调用该函数,传入本参数
追问
谢谢你的帮忙 不过跟out string没关系 根本没到这一步 我自己定义的char[]接收到的部分就是乱码了 还没有转换成string类型 所以不是string类型的关系
追答
!!!没说明白
我说你的C++中函数参数的char*
在c#中 dllimport 时,用 [out]StringBuilder 代替
展开全部
char*类型数据作为输出参数时,在c#中数据类型要写成StringBuilder。这样既解决了传进去的参数问题,又解决了传出参数的问题。
以下例子是我用C#调用VC dll中的函数的声明及使用方法:
using System.Runtime.InteropServices;//使用dll动态库和API函数必需
[DllImport("PmacNc.dll", CharSet = CharSet.Ansi)]
public static extern int GetResponse(StringBuilder com_response, System.UInt32
maxchar, System.Char[] sendChar);
Global.UserDll.GetResponse(com_response, 100, sendchar1);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看着分数挺多的我就来蹭一下……
更多追问追答
追问
这是什么东西?
追答
。你下下来看过了?
看过了应该能看懂才对。
没看过赶快下来看。
绝对无毒,怕有毒你自己拿里面的代码编译出exe和dll也行,反正代码也在里面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-18
展开全部
设置一下字符集
更多追问追答
追问
C#中设置吗?我开发工具用的VS2010 设置里边“生成序列化程序集”是自动的
追答
C# 在申明那个C++的DLL的时候
[DllImport("user32.dll", CharSet = CharSet.Unicode)] //这里你试试其他字符集
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint
type);
这里给的是一个例子
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询