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
TestDll への参照が Excel に追加され、コードは正常に "Connected" を返します。同じコードが Windows フォーム アプリケーションから開始されると、"Error!!!" が返されます。
私が混乱していたのは、Visual Basic では、thidr パーティの DLL の参照が C:\windows\assembly\GAC_MSIL\Interop.ThirdPartyDll... という形式であり、参照を追加しているときです。 Excel では、C:\Program Files (x86)\Common Files\ThirdParty\ThirdParty.dll という形式です。