来自 .dll 的函数在 vb.net 中失败,但在 vb6 中有效

Function from .dll fails from vb.net, but works from vb6

我有第三方提供的测试设备。该设备通过以太网端口连接到计算机,用于在生产环境中测试汽车传感器,该设备随附 .dll 和 .lib 文件。

当我从 vb.net 中的 dll 调用 "connect_function" 时,函数 return 是一个负数,表示与设备的连接失败。

当我从vb6中的dll或C中的lib中调用"connect-function"时,函数return为零,表示连接成功。

我不完全是 'programmer',尽管我作为制造工程师做了很多编程工作。我完全无法进一步排除故障。我已经尝试封送数据直到我脸色发青,但我不认为这是问题所在,因为调用成功,只是 dll 没有连接。

所以我要问的是:vb6 和 c++ 进行函数调用的方式与 vb.net 进行函数调用的方式有什么不同?


更新:2017 年 8 月 22 日: 感谢您的答复!我已经总结了下面的代码。

在所有情况下,我都没有收到任何编译器错误,但只有在 vb.net 中 dll return 才会出错。我不明白 dll 是怎么知道区别的。

Vb.net代码:

Imports System.Runtime.InteropServices
Module Module1
    <DllImport("myDevice.dll")> _
    Public Function CreateDeviceObject _
        (ByVal deviceType As Integer, _
         ByVal deviceNum As Integer, _
         ByVal deviceChan As Integer, _
         ByVal deviceName As String, _
         ByRef pointerToHandle As Integer) As Integer
    End Function
End Module

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim myHandle As Integer
        MsgBox("CreateAPSxObject Returned: " & CreateDeviceObject(2, 1, 1, "yo", myHandle))
    End Sub
End Class

VB6 代码:

Private Declare Function CreateDeviceObject Lib "myDevice.dll" _
    (ByVal deviceType As Long, _
     ByVal deviceNum As Long, _
     ByVal deviceChan As Long, _
     ByVal deviceName As String, _
     ByRef pointerToHandle As Long) As Long

Public myHandle As Long

Private Sub Command1_Click()
    MsgBox (CreateDeviceObject(2, 1, 1, "yo", myHandle))
End Sub

C代码:

#include <stdio.h>
#include <stdlib.h>

int __stdcall CreateDeviceObject (int, int,int,char *,int *);

int main()
{
    int myError=0, myHandle;

    myError = CreateAPSxObject(2,1,1,"yo",&myHandle);
    printf("Return=%d: ",myError);

    return 0;
}

我的 Visual Studio 2013 配置为将我的项目文件保存到 windows "My Documents" 文件夹,我的 IT 部门已将其重新路由到公司网络。 VB6 和 C 的东西在我的本地磁盘 (C:) 上。

当我将 vb.net (Visual Studio 2013) 项目文件夹移动到我的本地磁盘 (C:\VB) 时,dll 正常工作。

感谢所有花时间审阅此主题的人。我无法解释为什么这会产生影响,但希望它能对将来的人有所帮助。