我需要在最新的VS2010 c#项目中引用最旧的DLL(而不是.Net DLL)。 DLL文档显示了如何使用ReadObject函数:
MyDll rc = ReadObject(HEQUIP hEquip, UCHAR uchSegment, UCHAR uchType, USHORT usFirst, USHORT usQty, PUCHAR pValue);
还展示了如何在VB6项目中使用:
声明函数ReadObject Lib“MyDll.dll”(ByVal DriverId As Integer,ByVal uchSegment as Byte,ByVal uchType as Byte,ByVal usFirst As Integer,ByVal usQty as Integer,ByRef pValue as Any)
任何人都可以解释我如何在c#项目中引用DLL?关键词“ByVal”和“ByRef”对c#语言的正确转换是什么? 非常感谢任何建议
Jumpier
答案 0 :(得分:0)
我认为最早的DLL"你的意思是一个本机DLL。为此,您需要使用P/Invoke。
确保DLL位于系统可以找到它的位置。然后,导入如下函数:
[DllImport("MyDll.dll"])
private static int ReadObject(...);
您需要使用上面链接教程中列出的约定传递参数。我的第一枪就是:
[DllImport("MyDll.dll"])
private static int ReadObject(int driverId, byte segment, byte type, int first, int qty, ref byte value);
ByVal
和ByRef
在C#中无效。您需要省略ByVal
并将ByRef
更改为ref
。