调用dll时c#中的访问冲突错误

时间:2017-05-10 22:26:45

标签: c# visual-studio-2013 vb6 dllimport

在像这样的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.

运行程序系统时,在下面的代码中给出错误。我认为myDummyDatamyDummyError(两种类型Int32)都无法写明:

    ClassPLC.PLCReadWord(Convert.ToInt32(txtCommPort.Text),
                            Convert.ToInt32(txtDbRead.Text),
                            Convert.ToInt32(txtDwRead.Text),
                            myDummyData, myDummyError);

1 个答案:

答案 0 :(得分:1)

VB6默认为传递参数ByRef。这对应于C#中的ref。将导入函数的C#声明中的所有参数更改为ref