Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用dll时c#中的访问冲突错误_C#_Visual Studio 2013_Vb6_Dllimport - Fatal编程技术网

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

调用dll时c#中的访问冲突错误,c#,visual-studio-2013,vb6,dllimport,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, _

在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
mydummerror
(两种类型都是
Int32
)无法写入:

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

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

您收到的错误是什么?当您运行程序时,您是否确定相对于您的应用程序正在运行的位置,dll位于上两个目录中,然后位于一个dll目录中?是否有任何原因使您无法随应用程序分发Com3964r.dll,然后从DllImport中删除..\..\\dll\\n?调用PLCReadWord函数时,错误为“访问冲突错误未处理”。在目录路径表示法中没有问题。PLCOpenPort和PLC ClosePort运行正常。这些只是dll的发送值,不等待任何返回值。但是PLCReadWord无法写入myDummyData和myDummyError。