在像这样的Vb6代码中:
Public Declare Sub PLCReadWord Lib "COM3964R.dll" Alias "plc_fetchword" _
(com As Long, _
Db As Long, _
Dw As Long, _
data As Long, _
RisOper As Long)
在C#侧转换为:
[DllImport("..\\..\\dll\\Com3964r.dll", EntryPoint = "plc_fetchword")]
public static extern void PLCReadWord(
int com,
int Db,
int Dw,
int data,
int RisOper);
使用Visual Studio 2013进行编译 - Framework 3.5 - x86模式。我的系统有64位CPU和64位Windows 10.
运行程序系统时,在下面的代码中给出错误。我认为myDummyData
和myDummyError
(两种类型Int32
)都无法写明:
ClassPLC.PLCReadWord(Convert.ToInt32(txtCommPort.Text),
Convert.ToInt32(txtDbRead.Text),
Convert.ToInt32(txtDwRead.Text),
myDummyData, myDummyError);
答案 0 :(得分:1)
VB6默认为传递参数ByRef
。这对应于C#中的ref
。将导入函数的C#声明中的所有参数更改为ref
。