繁体   English   中英

从Excel调用时,第三方DLL起作用,而从VisualBasic / C#调用时,第三方DLL崩溃

[英]The third-party DLL works when called from Excel and crashes in the case of call from VisualBasic/C#

我有许多在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的引用,并且代码成功返回“ Connected”。 当从Windows窗体应用程序启动相同的代码时,它将返回“错误!!!”。

我感到困惑的是,在Visual Basic中,thidr-party DLL上的引用具有以下形式:C:\\ windows \\ assembly \\ GAC_MSIL \\ Interop.ThirdPartyDll ......,当我向其添加引用时在Excel中,它的格式为:C:\\ Program Files(x86)\\ Common Files \\ ThirdParty \\ ThirdParty.dll

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

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

最高

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM