2

ネイティブ C++ コードからスタティック ライブラリを作成する、かなり大きなレガシー nmake (Win32) プロジェクトがあります。このライブラリを C#/.Net アプリケーションで使用する必要があります。過去に多くの努力を重ねた結果、スタティック ライブラリをマネージ C++ ライブラリにラップすることに成功し、C#/.Net アプリケーションで参照できるようになりました。しかし、nmake プロジェクトの開発者から更新を受け取り、その間に自分のビルド マシンで多くのアップグレードを行った後、動作しなくなりました。

ただし、ビルド プロパティですべてのプリプロセッサ定数を設定することにより、nmake プロジェクトの cpp ファイルとヘッダー ファイルをインポートし、VS 2010 で Win32 スタティック ライブラリにビルドすることができます。ビルド構成の種類を DLL に設定し、C#/.Net アプリケーションで Win32 出力への参照を追加しようとすると、P/Invoke を使用することを望んでいますが、「MyLibrary への参照を使用できませんでした」というメッセージが表示されて失敗します。追加されます。」

Win32 ライブラリをビルドして C#/.Net プロジェクトから参照できるようにし、P/Invoke を使用できるようにする方法はありますか?

4

2 に答える 2

0

SWIG を使用して、コードのラッパーを生成できます。SWIG は非常に強力なツールであり、時間をかけて学習する価値があります。Python、C#、Java などの多くの言語のラッパーを作成するため、1 つの言語で動作するようになれば、他の言語でも簡単に使用できます。型を操作する必要があるかもしれませんが、すべてのラッパー コードが生成されます。swig を使用して、SWIG がコードを生成する特別な DLL を作成し、提供された C# コードを使用して DLL にアクセスします。管理された C++ アセンブリを処理する必要はありません。

http://www.swig.org/Doc2.0/SWIGDocumentation.html

編集:私の説明はそれほど明確ではないかもしれませんし、ドキュメントはかなり圧倒されます。開始するには、ここのセクション:

http://www.swig.org/Doc2.0/SWIGDocumentation.html#Introduction_nn2

于 2013-07-18T21:23:15.723 に答える