我有许多用于 x86 TestDll 的 C++Builder 第三方 x86 DLL。TestDll 初始化外部设备并尝试连接它(使用第三方 DLL)。TestDll 已注册并变得可见,以便在 Excel 下对其进行测试。它是从 Excel 的 VBA 和类似的 Visual Basic .Net 代码中调用的:
Dim test As New TestDLL.TestDLL.Class1
Dim i As Integer
i = test.Connect()
If i = 111 Then
lbl1.Text = "Connected"
End If
If i = 222 Then
lbl1.Text = "Not connected"
End If
If i = 333 Then
lbl1.Text = "Error!!!"
End If
在 Excel 中添加了对 TestDll 的引用,代码成功返回“已连接”。当从 Windows 窗体应用程序启动相同的代码时,它会返回“错误!!!”。
我发现让我感到困惑的是,在 Visual Basic 中,第三方 DLL 上的引用具有以下形式:C:\windows\assembly\GAC_MSIL\Interop.ThirdPartyDll...... 当我添加对它的引用时在 Excel 中,它的格式为:C:\Program Files (x86)\Common Files\ThirdParty\ThirdParty.dll