关于C#调用C++编写的DLL遇到的问题
C++编写的DLL中的含有2个数据结构:如下typedef struct {
char OpType[2]; //操作类型
char TrType[2]; //交易类型
char Reserved[48]; //预留字段
}strUp;
typedef struct {
char OpType[2]; //操作类型
char TrType[2]; //交易类型
char Reserved[48]; //预留字段
}strDown;
动态库为 myDll.Dll
接口函数为 myMethod(int i,char * strUp,char * strDown)
调用函数时,要为strUp赋值
请问在C#中应该如何调用?请大侠指点 --------------------编程问答-------------------- 1. 把结构体定义转换
[StructLayout(LayoutKind.Sequential, Pack = 1)] // 这里按照你原来代码的方式写
public struct strUp
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte OpType[2]; //操作类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte TrType[2]; //交易类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte Reserved[48];
}
[StructLayout(LayoutKind.Sequential, Pack = 1)] // 这里按照你原来代码的方式写
public struct strDown
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte OpType[2]; //操作类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte TrType[2]; //交易类型
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
byte Reserved[48];
}
2. 声明dll中的函数
[DllImport("myDll.dll", EntryPoint = "myMethod")]
private static extern EnumMessageType myMethod (int i, out strUp, out strDown);
试试行不行吧 --------------------编程问答-------------------- 上面SizeConst = 2有两处写错了,应该是SizeConst = 48
补充:.NET技术 , C#