C#调用C语言DLL 参数传递问题

燕赵飞歌 2016-01-07 05:14:38
请教大家一个问题:
public partial class Form1 : Form
{
[DllImport("user32.dll", EntryPoint = "MessageBoxA")]
static extern int MsgBox(int hWnd, string msg, string caption, int type);

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
string sinfo = "nihao ";
MsgBox(0, sinfo, "", 1);
}
}
如上代码,MessageBoxA的参数是一个字符串的地址,在C++中字符串是以'\0'结尾的,但是C#中string的结尾不是'\0',那把C#的string传递到MessageBoxA函数中,MessageBoxA函数是如何解析的呢??
一直想不明白,哪位给解释一下?
...全文
76 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
燕赵飞歌 2016-01-08
  • 打赏
  • 举报
回复
还是不好理解,以前一直用的C++,最近想把这些工控的上位机部分采用C#来写,用到以前的一些库想以DLL的形式使用,真是不好理解啊! C++怎么知道我传去的C# string有多少个字符呢?又没有NULL结束符。....................................
Poopaye 2016-01-07
  • 打赏
  • 举报
回复
一切都会自动转换

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧