1

我有许多用于 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

4

2 回答 2

0

在我看来,您在不同位置有多个相同 dll 的副本。您可以保留 dll 的工作副本并删除所有副本的其余部分。添加 dll 工作副本的引用。

于 2013-09-09T09:17:55.827 回答
0

我将删除 Visual Basic 中的(不工作的)引用,并通过手动选择文件将其替换为 Excel 中的引用。

另一种可能性:我知道这可能并不完美,但您可以从其他 VBA 调用 Excel 实例,然后在 Excel 实例中运行代码,从而使用工作文件。

最大限度

于 2013-09-09T08:59:46.517 回答