C# 调用C++Dll函数问题
原函数typdedef struct tagParam
{
char Port[3];
char CtrlID[3];
char Params[1024];
char IPPort[5];
char IPAddr[15];
}
unsigned short OpenComm(Params & lParam, int sType)
如下为我转换后的
[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
private struct Param
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
public string Port;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
public string CtrlID;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
public string Params;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 4)]
public string IPPort;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 15)]
public string IPAddr;
}
private short sType=401;
[DllImport("CM60.dll")]
private static extern short OpenComm(ref Param par, short stype);
public short Open()
{
Param par = new Param();
par.Port = "003";
return OpenComm(ref par, sType);
}
在调用Open()方法时一直不成功,请各位帮一下忙呀。不好意思没分了给我的点少哈 --------------------编程问答-------------------- 1、Param 怎么定义的?
--------------------编程问答-------------------- 同样碰到的问题,启发很大啊 --------------------编程问答-------------------- int 32
short 16
--------------------编程问答-------------------- int 还是int·· --------------------编程问答-------------------- 提示啥错误?调用约定设置下试试 --------------------编程问答-------------------- 我觉得应该是 byte [] --------------------编程问答-------------------- 字符串后面会加个\0结尾,看看是不是这个原因
补充:.NET技术 , C#