2009-08-06 4 views
2

私は現在、多かれ少なかれVB 6 COM dllからデータを取得する必要があるスクリプトを開発しています。このDLLは現在、MS Word VBAプロジェクトで使用されており、クラスなどをVBAコードにエクスポートします。これはVBAエディタのTools - > Referencesメニューに追加されています.VBAのオブジェクトブラウザにそのクラスが表示されています。IronPythonでVB6 COM 'リファレンス'を使用するにはどうすればよいですか?

私の読んだところ、VB.NETでVB6 COMライブラリを使用することは可能です(少なくとも、可能でなければなりません).VB.NETでも可能であり、.NETが動作しているのでIronPythonは論理的にIronPythonから古代のDLLにアクセスできないので、CLRではどうですか?

IronPythonでimport clr; clr.AddReferenceToFileAndPath(dllpath)を試しましたが、「IOError:ファイルは存在しません」と表示されていますが、これは明らかに偽です。

誰でも私にVB6 COMオブジェクトを/ any/.NET言語で使用することを指摘できれば、それは非常に感謝しています。

ありがとうございます!

PS:いいえ、私はCOM DLLのソースを編集/表示できません。サードパーティ独自のものです。 PPS:GUID/COMの名前を取得することができます。 DLLの?

答えて

1

tlbimpツールを使用してランタイムCOMラッパーアセンブリを生成し、その参照を追加する必要があります。 .net属性をサポートする言語は相互運用を明示的に行うことができますが、そこでさえ、ラッパーを自動生成することははるかに簡単です。

ildasmでラッパーアセンブリを検査すると、変換の実行方法が正確に表示されます。

+0

ありがとうございます!それはかなりうまくいった。 IronPythonのinteropアセンブリへの参照を追加しました。すべてが 'Just Works'です!それは決して起こることはありません:) –

0

Visual Studioでは、IronPythonが完全な言語サポートを提供しているのか、.NET FrameworkでCLRのみを実行しているのかわからない場合は、[参照の追加]ダイアログボックスに移動し、COMタブをクリックし、ライブラリを選択します(VB6/VBAリファレンスダイアログのように)。基本的には完了です。 VisualStudioは、COMライブラリの中間者である.NET interopアセンブリを生成し、.NETアセンブリのように使用することができます。 IronPythonがVisualStudioでサポートされている場合、それはおそらくあなたがすべきことです。

もしそうでなければ、VisualStudioがinteropアセンブリ(Web参照を追加するときに使用するWSDL.EXEのようなビット)を生成するために使用するコマンドラインツールを探し、そのツールを使用して手動でinteropアセンブリを生成し、他の.NETアセンブリと同じようにIronPythonからのものです。私はVisualStudio内でC#の作業しか行っていないので、私はまだGoogle/MSDNをチェックせずにあなたのための詳細はありません。

関連する問題