0

現在、32 ビット dll を使用する C# プロジェクトがあります。私がやろうとしているのは、C++ プロジェクトで dll を使用することです。残念ながら、プロジェクトで参照されている dll には .h または .lib ファイルが付属していないため、dll 内のクラスにアクセスする方法や使用する方法について混乱していますC++ (Visual Studio 2010) の私のプロジェクトの dll ファイル。ここで、dllファイルにクラスが含まれている場合、それはCOMコンポーネントである可能性が高いことを読みました.そのdllのメソッドとオブジェクトを統合して使用するために何を見なければならないかについての提案.

アップデート:

importステートメントを実行して、COMであるかどうかを確認しました。ただし、「.tlb ファイルが見つかりません」というメッセージが表示されます。次に、依存関係ウォーカーを使用して、エクスポートされたメソッド (オブジェクト) がないかどうかを確認することにしました。メイン ファイル (強調表示されている) をクリックしましたが、エクスポートされた関数が表示されませんでした。次に何を確認する必要があるかについてのヒントはありますか?. 依存関係ウォーカーから得たものは次のとおりです。 ここに画像の説明を入力

4

2 に答える 2

5

.dll のみを使用し、対応する .h または .exp を使用しない場合、探してみる場所の 1 つはエクスポート テーブルです。Dependency Walkerなどのツールは、この情報を表示できます。

Dependency Walker に関する 1 つの注意点は、バイナリ (DLL) に適切なバージョン (x86 または x86_64) を使用することです。よくわからない場合は、1 つのバージョンを選択してロードしてみてください。中央パネルの CPU 列の下で、「x64」または「x86」と表示されているかどうかを確認して、どちらを使用する必要があるかを判断します。

提供された Dependency Walker のスクリーンショット (MSCOREE.DLL への依存関係を示しています) について、私は Eugene に同意します。これは、COM ライブラリではなく .NET ライブラリである可能性が最も高いです。C/C++ からの .NET マネージ コードの呼び出しに関する他の質問の 1 つを確認してください。

于 2013-03-11T19:51:43.893 に答える
0

dll は .Net アセンブリである可能性が最も高いため (mscoree.dll をインポートしていることがわかります)、おそらく次のようになります。

于 2013-03-11T23:45:39.067 に答える