我有带C ++ DLL接口的设备,我应该创建C#类来控制它。我没有问题(dis)连接到这个设备,但我无法获得读取功能:
界面中的功能定义是:
bool Driver_Read(int DeviceNo, unsigned char *pReadBuf, unsigned long ReadLen, unsigned long *pReadLen)
我做了som研究,我发现这段代码应该有效:
[DllImport("..\\..\\..\\..\\Driver.dll")]
public static extern bool Driver_Read(int deviceNo, StringBuilder pReadBuf, ulong readLen, ref UInt32 pReadLen);
但是当我运行它时,我得到一个AccessViolationException:"尝试读取或写入受保护的内存。这通常表明其他内存已损坏。"
很多人都有类似的问题,但没有什么对我有帮助。 你知道吗,问题出在哪里?提前谢谢。
答案 0 :(得分:0)
试试这个:
[DllImport("..\\..\\..\\..\\Driver.dll")]
public static extern bool Driver_Read(int DeviceNo, IntPtr pReadBuf, uint ReadLen, ref uint pReadLen)
这应该有助于从C ++到C#的类型转换:
http://msdn.microsoft.com/en-us/library/ac7ay120(v=vs.110).aspx