†まずは「マーシャリング」を参照して下さい。基本が解ればなんとかなると思います。以下の2つの方法があります。DLLのインターフェイスをマネージドコード(.NET)に公開する方法。C#http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.htmlCOMのインターフェイスをマネージドコード(.NET)に公開する方法。以下の2つの方法があります。.NETのアンマネージド拡張(C++/CLI)でDLLインターフェイスをDLLユーザに公開する方法と.NETアセンブリでCOMインターフェイスをCOMユーザに公開する方法があります。†コチラが参考になります。masterhttps://github.com/OpenTouryoProject/SampleProgram/tree/master/Other/InteropWithUnmanage.NET(manage)⇔VC、VB6(unmanage)間の相互運用のテストです。C++/CLIのブリッジDLLを使用して、アンマネージコードからマネージコードを呼び出す。†マーシャリングの動作のイメージができていないと、正しい処理を実装できない可能性があります。以前、callback実装を正しく実装できないことがあった。†C++のEXEからC#のメソッドを呼び出します。このときの引数でC++側のコールバック関数のアドレスを渡します。このあと、外的要因でC#のDLLから上記のコールバックを呼び出そうとしていますが、コールバック呼び出しで例外エラーとなります。†C++からC#は直接呼べないのでアンマネージド拡張(C++/CLI)でDLLのエクスポート関数経由で.NETに接続する必要があると思います。.NETにCの関数ポインタを直接渡しても.NETからの呼び出しはできないので、C++/CLI経由にする必要があると思います。そこで思いついたのは、C++/CLI内部でコールバックするメソッドを持ったオブジェクトを作成し、C#のメソッド経由でそのオブジェクトを渡す。C#からこのオブジェクトのメソッドを経由してC++にコールバックする。C++/CLIでC#から呼ぶためのDLLエクスポート関数を作る。このエクスポート関数にCの関数ポインタを渡してコールバックする。逆(.NETのコールバック関数をC/C++から呼び出したい)は標準の相互運用マーシャラーでサポートされるようです。@IThttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=12478&forum=7恐らく、自動的にマーシャリングされるのだと思います。†1.で解決しました。