マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

方法

アンマネージドコードのインターフェイスをマネージドコード(.NET)から使用する方法

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

DLLのインターフェイスをマネージドコード(.NET)から使用する方法。

サンプルコード参考を参照。

COMのインターフェイスをマネージドコード(.NET)から使用する方法。

サンプルコード参考を参照。

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

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

.NETのアンマネージド拡張(C++/CLI)でDLLインターフェイスをDLLユーザに公開する方法。

サンプルコード参考を参照。

.NETアセンブリでCOMインターフェイスをCOMユーザに公開する方法。

参考を参照。

サンプルコード

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

.NET(manage)→ VC、VB6(unmanage)の相互運用

.NET(manage)→ VC、VB6(unmanage)の相互運用のテストです。

アンマネージコードからマネージコードを呼び出す

上記の逆(VC、VB6(unmanage)→ .NET(manage))を行なう相互運用。

事例

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

参考を参照。

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

質問

回答

そこで思いついたのは、

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

という2つの方法です。

結果

上記の1.で解決しました。

参考

microsoft.com

Microsoft Docs

MSDN(旧)

その他

@IT

P/Invoke

ツール類


Tags: :Windows, :プログラミング, :.NET開発


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