アンマネージC++からマネージC#関数を呼び出す方法
または、C#がアンマネージエクスポートを作成できるようにする 私のプロジェクト を使用します。それらは母国語で書かれたかのように消費することができます。
最初にCOM相互運用機能を使用しましたが、はるかに単純なため、今ではIJWに切り替えました(正常に機能します)。ラッパーC++/CLR DLL(/ clrでコンパイル)があります。
簡単な例(静的を使用して呼び出しを簡単にする):
namespace MyClasses
{
public class MyClass
{
public static void DoSomething()
{
MessageBox.Show("Hello World");
}
}
}
DLLでは、次のように名前空間を参照できます。
using namespace MyClasses;
そしてそれを呼んでください:
__declspec(dllexport) void CallManagedCode()
{
MyClass::DoSomething();
}
これで、マネージコードを呼び出すアンマネージDLL export "CallManagedCode"ができました。
もちろん、マネージド/アンマネージド境界間でデータを変換する必要もあります。 VS2008以降、Microsoftには、アンマネージタイプとマネージタイプを変換するためのマーシャルヘルパーが含まれています。 http://msdn.Microsoft.com/en-us/library/bb384865.aspx を参照してください。
私はC++/CLIラッパークラスを使用しました ここで説明 そして実装は比較的簡単でした。
RE:アンマネージC++アプリケーションからマネージC#コードを呼び出す方法は?
アンマネージC++コードからマネージ.NETC#COMオブジェクトを呼び出す.。
http://www.codeproject.com/KB/cs/ManagedCOM.aspx
マネージC#DLLをアンマネージC++プロジェクトでラップする:dll。
http://www.experts-exchange.com/Programming/Languages/.NET/Q_22006727.html