web-dev-qa-db-ja.com

任意のアンマネージDLLのP / Invokeシグネチャを生成するツールはありますか?

Microsoft独自のアンマネージDLLのP/Invokeシグネチャを生成するツールに遭遇しました: PInvoke Interop Assistant

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

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

編集: 実際の問​​題 解決しようとしています

35
GregC

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

MicrosoftのC++/CLIコンパイラでも、/clr:safeおよび#includeヘッダーファイル。p/ invokeコードを生成します。 ILSpy(無料)またはRed Gate Reflector(以前は無料でした)。

46
Ben Voigt

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

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

enter image description here

15
parsley72

このプロジェクトはアクティブであり、タスクに有望に見えます: https://github.com/mono/CppSharp

9
V.B.

ネイティブのDLL C-style DLLエクスポート関数とC++ DLLエクスポートクラスの両方を含む xInterop C++ .NET Bridge with .NET to Native C++ Bridge を使用します。これは、いくつかの制限付きで無料で評価できます。

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

3
xInterop

別の選択肢は SharpGenTools です。 SharpDXは、directx apiのバインディングを「自動的に」作成するために使用します。 CppSharp もあります。これは、QtSharpがネイティブC++/Cライブラリへのバインディングを生成するために使用します。これまで、CppSharpは.Net Framework 6以降とのみ互換性があります。

3
Francisco Neto