39

Microsoft 独自の管理されていない DLL の P/Invoke 署名を生成するツールに出くわしました: PInvoke Interop Assistant

サードパーティのアンマネージ DLL の P/Invoke 署名を生成する同様のツールはありますか?

または、サードパーティの DLL をPInvoke Interop Assistantにフィードする任意の方法

編集:私が解決しようとしている実際の問題

4

6 に答える 6

48

Googleはすぐにhttp://www.pinvoker.com/を見つけました(互換性はVS2005、2008、および2010としてリストされています。新しいバージョンで動作するように更新されていないようです)

MicrosoftのC++/ CLIコンパイラもこれを行うことができます。ヘッダーファイルを使用する/clr:safe#include、ILSpy(無料)やRed Gate Reflector(以前は無料)などで抽出できるp/invokeコードが生成されます。

于 2011-06-12T02:04:10.630 に答える
15

「SigImp Translate Snippet」とマークされた UI の 3 番目のタブを使用して、アンマネージ DLL用のPInvoke Interop Assistantを使用します。ヘッダーを「ネイティブ コード スニペット」ウィンドウにコピー アンド ペーストし、[生成] をクリックします (または [自動生成] をオンにします)。例として、私の質問からのコードをいくつか示します。何らかの理由で、エラーは [エラー] パネルに表示されず、生成されたコードの上部にコメントとして表示されることに注意してください。

何人かがすでに言っているように、生成されたコードはガイドとして使用する必要があります。必要なものを正確に取得するには、変更を加える必要があるかもしれません。

ここに画像の説明を入力

于 2014-11-09T01:47:23.337 に答える
4

xInterop C++ .NET Bridge と .NET to Native C++ Bridge を使用して、C スタイルの DLL エクスポート関数と C++ DLL エクスポート クラスの両方を含むネイティブ DLL の C# ラッパーを作成できます。いくつかの制限付きで無料で評価できます。

免責事項: 私はxInterop C++ .NET Bridgeの作成者です。

于 2016-09-22T02:23:02.347 に答える
3

別の代替手段はSharpGenToolsです。これは、directx API のバインディングを「自動的に」作成するために SharpDX によって使用されます。CppSharpもあり、ネイティブ C++/C ライブラリへのバインディングを生成するために QtSharp によって使用されます。これまで、CppSharp は .Net Framework 6+ とのみ互換性があります。

于 2019-03-05T02:08:30.323 に答える
-4

VS SDKに付属の Dumpbin.exe、Dumpbinを使用します。ダンプされたデータから手動でpinvoke署名を書き込む必要があります。

于 2011-06-12T02:04:20.053 に答える