当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,