在C++里面的定义是
extern "C" __declspec(dllimport) bool Usb_Qu_write(byte Qu_index, char Qu_type, char *pData);
我现在要在C# 里面用要怎么改啊。
我弄成public static extern bool Usb_Qu_write(byte Q_index, byte Q_type, byte pQ_data);
然后报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”
大家帮下忙。
extern "C" __declspec(dllimport) bool Usb_Qu_write(byte Qu_index, char Qu_type, char *pData);
我现在要在C# 里面用要怎么改啊。
我弄成public static extern bool Usb_Qu_write(byte Q_index, byte Q_type, byte pQ_data);
然后报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”
大家帮下忙。
public static extern bool Usb_Qu_write(byte Q_index, byte Q_type, byte[] pQ_data);
使用Usb_Qu_write(,,data);
因为 C# 缺省是 __stdcall。还有就是最后一个参数的问题。
这个要看char* 参数是什么。
如果是传入的字符串,那么使用 string,否则使用 StringBuilder.
如果是传入的字符引用,那么使用 ref 修饰。C# 平台封送很复杂,不是简单就能看出的。
C++ 的接口不是仅仅一个 函数签名,还有参数契约。