首页 > 解决方案 > 有人知道如何将 c++dll 与 vb6 连接吗?

问题描述

目前,我被要求将 c++ dll 与 vb 6 连接起来,并且我被提供了一行关于如何使用它的示例代码,下面是示例代码 Public Declare Function ABC_ConnectDevice Lib "ABC_API.dll" (ByVal strCommPort As String, ByVal lngBaudRate As Long, ByRef RespData As sRespData) As Long

这是我目前编写并需要连接的代码

ABC_API_API long __stdcall ABC_ConnectDevice(long dwPort, long dwSpeed)
{
    long lngResult, lngRtn;
    char strMsg[512];
    memset((void*)strMsg, '\0', sizeof(strMsg));
    READERHANDLE ptrCardDispenser;

    try {
        lngResult = F3_Connect(dwPort, dwSpeed, NULL, &ptrCardDispenser);
        if(lngResult == 0) {
            g_Reader = &ptrCardDispenser;
            lngRtn = 0;
            

        } else {
            lngRtn = -1;
            
        }

        return lngRtn;
    } catch (exception& e) {
        sprintf_s(strMsg, "Exception@ReadIni: %s", e.what());
        WriteError(strMsg);
        return -1;
    }
}

如您所见,c++ 中的参数是 long dwport 和 long swSpeed,所以当 vb6 部分时,我添加了那个 2 参数,但是当我运行它时,我得到的是编译错误,参数不是可选的。下面是我在表单和模块中使用的代码

Private Sub btnOpenConnection_Click()

Dim openComm As Long
openComm = MTK_ConnectDevice()
MsgBox openComm

End Sub

下面是我在模块中编写的代码

Public Declare Function ABC_ConnectDevice Lib "ABC_API.dll" (ByVal lngdwPort, ByVal lngdwSpeed) As Long

我目前假设我可能传入了错误的参数,但我在 C++ 中使用的参数确实是 dwPort 和 dwSpeed 而已.. 所以我真的对我是否需要传入额外的参数或任何部分做错了一点头绪

这是我实际使用 c++ 和 vb6 的第三天,所以不要对我这么苛刻,我只想知道代码的问题是什么以及我应该如何解决它。可以参考什么样的文档或示例代码。谢谢。

嗨,在参考制造文档后问题已经解决,该文档提到我应该传递什么数据值。感谢所有试图帮助我解决并教我的人。作为 C++ 的初学者,我真的很感激这个社区,它是初学者友好,愿意一步一步教我,即使我们在现实生活中并不认识。感谢所有帮助我解决问题的人。再次感谢你

标签: c++vb6

解决方案


推荐阅读