Open棟梁Project - マイクロソフト系技術情報 Wiki

目次

概要

まずは「マーシャリング」を参照して下さい。
基本が解ればなんとかなると思います。

方法

アンマネージドコードのインターフェイスをマネージドコード(.NET)に公開する方法

以下の2つの方法があります。

マネージドコード(.NET)のインターフェイスをアンマネージドコードに公開する方法

以下の2つの方法があります。

サンプルコード

コチラが参考になります。

事例

C/C++側のコールバック関数を.NETから呼び出したい

マーシャリングの動作のイメージができていないと、正しい処理を実装できない可能性があります。
e.g.: 以前、callback実装を正しく実装できないことがあった。

質問

回答

そこで思いついたのは、

  1. C++/CLI内部でコールバックするメソッドを持ったオブジェクトを作成し、
    C#のメソッド経由でそのオブジェクトを渡す。
    C#からこのオブジェクトのメソッドを経由してC++にコールバックする。
  2. C++/CLIでC#から呼ぶためのDLLエクスポート関数を作る。
    このエクスポート関数にCの関数ポインタを渡してコールバックする。

という2つの方法です。

逆(.NETのコールバック関数をC/C++から呼び出したい)は
標準の相互運用マーシャラーでサポートされるようです。

恐らく、自動的にマーシャリングされるのだと思います。

結果

1.で解決しました。

参考

MSDN

その他

ツール類


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS