C#一个非nET的DLL 原型函数 int Readkey(char* sett,char* rdata,int cmd) ,在C#里要怎么定义 sett为传入值,rdata是存储返回输出的,整个函数成功/失败返回数字值,其中两个char* 在C#下要怎么定义? [sett= "1,9600,N,8,1";]
解决方案 »
- 设置 FormBorderStyle.None 时,子窗体首次加载不能最大化。
- 简单问题:vc.net这条语句怎么转成c#!!!!!!!!!!!
- 新手求助:帮忙看看这个SQL语句该怎么写
- 算法牛牛人,急!急!急!解决高分抛出!已知三次Bezier曲线四个控制点的情况下求出Bezier曲线的长度?
- 高分求专家指教!PC与PLC串行通信问题??
- combobox添加新项的问题,谢谢。
- 怎么将Excel数据导入SQL数据库中?
- 求救:Windows 2008 x64 Microsoft.office.interop.word 内存不足,请现在保存文档
- 问个小问题,大神们指点一下
- 如何用SqlCommand執行一個Insert語句后傳回這條記錄的第一個字段值.
- 关于SqlDataAdapter的Update方法的问题
- c# 如何开发IE插件?
public unsafe static extern int ReadKey(char* sett, char* rdata, int cmd);
private void button1_Click_1(object sender, EventArgs e)
{
//
string sk = "1,9600,N,8,1";
StringBuilder sd = new StringBuilder(sk, 100);
string rt="";
StringBuilder rk = new StringBuilder(rt, 100);
int p;
p=ReadKey(sd, rk, 1);
textBox1.Text = p.ToString();
}
还是提示错误:无法从 StringBuilder 转换为CHAR *
在C#里也可以定义指针,但需要声明unsafe并且编译的时候也要加上unsafe参数。
或者你可以试试ref char xxx,ref表示引用传递。
[System.Runtime.InteropServices.DllImport("。.dll")]
public static extern int Readkey(
StringBuilder sett,
ref StringBuilder rdata,
int cmd
);
[DllImport("KP.dll", EntryPoint = "Readkey", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public unsafe static extern int ReadKey(string sett, StringBuilder rdata, int cmd); private void button1_Click_1(object sender, EventArgs e)
{
string sk = "1,9600,N,8,1";
StringBuilder sd = new StringBuilder(sk, 100);
int p;
p=ReadKey(sk, sd, 1);
textBox1.Text = p.ToString();
}
public static extern int Readkey(StringBuilder sett,StringBuilder rdata,int cmd);
[DllImport("xxx.dll",CharSet =CharSet.Ansi)]
public static extern int Readkey(string sett,StringBuilder rdata,int cmd);