web-dev-qa-db-ja.com

単純なc ++。netラッパーを作成します。ステップバイステップ

私はC++プロジェクトを持っています。私はc ++の完全なZEROだと認めています。しかし、それでもc ++。netラッパーを作成して、アンマネージc ++ライブラリを使用して作業できるようにする必要があります。だから私が持っているもの:1)アンマネージプロジェクトのヘッダーファイル。 2)管理されていないプロジェクトのライブラリ(.dllおよび.lib)3)C#アプリケーションのラッパーとして使用する予定の空のC++。NETプロジェクト

どうすれば始められますか?アンマネージライブラリへの参照を設定する方法すらわかりません。

S.O.S.

42
Evgeny007

http://www.codeproject.com/KB/mcpp/quickcppcli.aspx#A8

これが一般的な方向です。 C++/CLIクラスライブラリプロジェクトを作成し、それに.NETクラスを追加し(このサンプルではStudentWrapper)、アンマネージクラスインスタンスをマネージクラスメンバーとして作成し、すべてのアンマネージクラス関数をラップする必要があります。アンマネージライブラリは、参照としてではなく、リンカーの依存関係リストを使用してC++/CLIプロジェクトに追加されます。プロジェクト-プロパティ-リンカーで追加の依存関係を開き、そこに.lib名を追加します。

注:C++/CLIラッパーについて話しているので、PInvokeはありません! PInvokeは、クラスではなく、エクスポートされた関数(API)を呼び出すために使用されます。

35
Alex F

アンマネージDLLと通信するには、.NETから p/invoke を使用する必要があります。

基本的に、アンマネージDLLで呼び出す関数ごとに関数ヘッダーを作成し、.NETにどのDLL関数が存在するかを伝え、.NETの他の関数と同じようにその関数を呼び出すだけです。ラッパー。

アンマネージDLL内の関数の関数定義と正しいデータ型を知っている限り、C++の知識さえ必要ありません。

8
Andy Shellam