c#调用c++的结构体和函数
在c++的dll文件里是这样定义的:
我在c#里面是这样写的,但是总是不对
主要c#在读struct结构体里面的Num的时候总是不对,读Address和Length都是对的
另外C++里面的byte* WORD*转为c#里面的什么类型最好?
谢谢了
// ============== 常量定义 =====================
#define ID_MAX_SIZE 8 // ID号最多8字节(64bits)
#define MAX_LABELS 5 // 一次读写操作最多不超过5个
typedef struct tagID
{
unsigned short Address; // ID号在标签内存中的地址
unsigned short Length; // ID号字节数
unsigned char Num[MAX_LABELS][ID_MAX_SIZE]; // 存放ID号的字节数组
} ID;
//读取标签ID号
apiReturn _stdcall ReadLabelID(HANDLE hScanner, int nMax, ID *IDBuffer, int *nCounter);
我在c#里面是这样写的,但是总是不对
[DllImport("Reader2022DLL.dll")]
unsafe public static extern UInt16 ReadLabelID(IntPtr hScanner,int nMax,ref tagID IDBuffer,ref int nCounter);
public const int ID_MAX_SIZE=8; // ID号最多8字节(64bits)
public const int MAX_LABELS = 5; // 一次读写操作最多不超过5个
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi,Pack=1)]
unsafe public struct tagID
{
public ushort Address; // ID号在标签内存中的地址
public ushort Length; // ID号字节数
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)]
public byte [,] Num; // 存放ID号的字节数组
};
主要c#在读struct结构体里面的Num的时候总是不对,读Address和Length都是对的
另外C++里面的byte* WORD*转为c#里面的什么类型最好?
谢谢了
...全文
相关推荐
CSharp调用C动态链接库详解
在实际工作中,我们经常会将C语言中的.lib和.h文件(静态库)编译成动态连接库.dll文件(这里只提供这两种文件,没有完整的工程),以提供给其他语言平台调用。
C++生成动态库dll项目、及C#调用C++的dll项目,两个项目分开的,配合使用
C++生成动态库dll项目、及C#调用C++的dll项目,两个项目分开的,配合使用
C#调用C++动态库,执行回调函数并传递结构体参数
c#调用C++动态库、执行回调函数,并回传结构体参数数据。vs2017环境编写C#和C++动态库,这个为完整工程例子,可供相关人员学习参考。
C_CPP_python.pdf.zip_C python_pdf_python C#_python pdf
详细讲述了使用c来扩充Python,pdf文档。
C#调用C++生成的DLL,并返回结构体引用或者结构体指针多个值
C#调用C++生成的DLL,并返回结构体引用或者结构体指针多个值,工程已编译好


