3

VC++ の例を提供するライブラリをテストしようとしています。ただし、すべてのプロジェクトで gcc/g++ を使用しています。

さて、VC++ の例がライブラリにアクセスする方法は、#importディレクティブを使用してライブラリ DLL の場所を渡し、名前空間LIBRARYNAMEを使用して、未定義の型を作成できることです (定義されていると仮定します)。 DLL で) __uuidof を使用して新しいインスタンスを作成します。それ以降、ライブラリ関数の 1 つを呼び出すには、この例では単にcreatedObj->foo()を実行するだけです。

うーん... g++ の #import は VC++ の import (こちらを参照) とは異なるため、この例はうまくいきません。

これを g++ でコンパイルできるように変換する方法はありますか? または、ライブラリ開発者が試してみることのできる静的ライブラリを提供してくれるまで、私は SOL ですか?

4

3 に答える 3

2

OLEViewer と「View type information」を使用して IDL の基本を抽出するのに役立ったかもしれません。または、VC++ で生成された .tlh および .tli ファイルを使用して、それらを G++ プロジェクトにインポートすることもできます。

この答えは遅すぎると思いますが、現在、私自身も同様の問題に遭遇しているため、このスレッドに参加しました。解決策が時間通りに見つかったことを願っています。

よろしく。

于 2010-05-20T15:55:02.480 に答える
2

cygwin を使用している場合は、このページ: http://www.cygwin.com/cygwin-ug-net/dll.htmlで必要なすべてのヘルプが提供されます。

mingw を使用している場合は、同じことを実行できますが、おそらく grep と sed がないため、別の方法でフィルタリングを行って .def ファイルを取得する必要があります。

于 2009-06-26T19:44:01.153 に答える
2

VC++ で使用#importしている場合は、DLL が通常の DLL ではなく、COM DLL であることを意味します。

gcc は COM をサポートしていないため、ライブラリの作成者が非 COM バージョンを作成するまで待つ必要があります。

于 2009-07-31T14:39:27.213 に答える