2

ソリューションを C# から C++ に移行中です。いくつかのネイティブ C++ DLL を作成しましたが、それらは問題ありません。ネイティブ dll を c++ と c# の両方に接続するのは簡単です。C# の場合、メソッドの実行とコールバックに P/Invoke を使用しdelegateています。ポインタをアンマネージ メモリに渡し、Marshallクラスを使用して読み取ります。

今、私は反対の状況にあります-今はC#別のC#プロジェクトから使用されるプロジェクトを作成する必要がありますが、後でメインプロジェクトをC++に書き直すため、C#C++からプロジェクトにアクセスする必要があります。いくつかのメソッドのみを提供する必要があります:PlaceOrder(void* pointerToStruct) CancelOrder(void* pointerToStruct)および 1 つのコールバックdelegate OrderUpdated(void* pointerToStruct)

ヒントと例を探しています。ネイティブ C++ と C# の両方から使用でき、いくつかのメソッド + 1 つのコールバックを提供する C# プロジェクトを作成するにはどうすればよいですか。

特に、メモリをどうするべきかわかりません。C# でアンマネージ メモリに書き込み、C++ で読み取るか、C# でマネージ メモリに書き込み、C++ でマネージ メモリを読み取る必要があります... 構造体へのポインタパラメータで渡すものは、アンマネージド メモリまたはマネージド メモリなどを指す必要があります。

4

2 に答える 2

3

COM コンポーネントの作成が必要な場合があります: .Net で COM コンポーネントと ActiveX コントロールを作成する

Windows8 で開発している場合、Windows コンポーネントの作成を考えるかもしれません。

C# での Windows ランタイム コンポーネントの作成

于 2013-06-27T10:19:36.320 に答える