1

マネージDLL ファイルから dllexport しようとしているアンマネージ クラスがあります。アンマネージ クラスを別のマネージDLL ファイルで使用しようとしています。ただし、これを実行しようとすると、リンクエラーが発生します。

アンマネージ DLL ファイルでこれを何度も行ってきたので、その仕組みを理解しています。マネージド クラスで「public ref」などを使用する方法を知っています。

どこかに設定する必要があるフラグはありますか?または、DllImport マジックを実行する必要がありますか?

これは .NET 2.0 およびVisual Studio 2005にあります。

4

3 に答える 3

3

マネージコードからアンマネージクラスを使用する場合は、次のことができます。

  1. 厄介なP/Invokeを使用して、クラスメンバー関数(コンストラクター、デストラクタなど)をロードし、「実際の」メンバー関数を呼び出すための厄介なマネージラッパークラスを作成します。仮想メソッドが関係している場合、これはさらに悪化します。
  2. 2番目のオプション(私の意見ではより良い)は、アンマネージクラスへの単純なプロキシであるC ++ / CLIラッパークラス(これに精通しているとおっしゃっていました)を作成することです。アンマネージクラスにあるすべてのメンバー関数について、プロキシクラスにも同様の関数があります。次に、管理対象プロジェクトからそのDLLへの参照を追加する単純なケースであり、クラスを他の.NETクラスと同じように使用できます。クラスが他の管理されていないもの(マーシャリングできないもの)を公開すると、より多くの作業が発生することを考慮してください。

2番目のオプションについてさらに情報が必要な場合は、この手法を詳しく説明している古いリンクをいくつか調べることができます。

于 2009-03-23T17:16:10.103 に答える