簡體   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