C++ から任意の C# 関数を呼び出せるようにする必要があります。http://www.infoq.com/articles/in-process-java-net-integrationは ICLRRuntimeHost::ExecuteInDefaultAppDomain() の使用を提案していますが、これでは次の形式のメソッドしか呼び出せません。int method(string arg)
任意の C# 関数を呼び出す最良の方法は何ですか?
C++ から任意の C# 関数を呼び出せるようにする必要があります。http://www.infoq.com/articles/in-process-java-net-integrationは ICLRRuntimeHost::ExecuteInDefaultAppDomain() の使用を提案していますが、これでは次の形式のメソッドしか呼び出せません。int method(string arg)
任意の C# 関数を呼び出す最良の方法は何ですか?
C++ アプリケーションが C# DLL 内の関数を呼び出す方法はいくつかあります。
ICLRRuntimeHost::ExecuteInDefaultAppDomain()
)
/clrフラグを使用して C++ コードをコンパイルします。これにより、任意の .NET コードを比較的簡単に呼び出すことができます。
例えば:
#include <tchar.h>
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
System::DateTime now = System::DateTime::Now;
printf("%d:%d:%d\n", now.Hour, now.Minute, now.Second);
return 0;
}
これは「C++」としてカウントされますか? まあ、それは明らかに標準 C++ではありません...
C++ プログラム (またはその一部) が /clr でコンパイルされてもかまわない場合は、C++/CLI を使用して任意の .NET コードを呼び出すことができます (参照を追加する限り)。 この記事を試してみてください。
編集:これは素晴らしいチュートリアルです
もう 1 つの方法は、C# コードを COM として公開することです。
最も簡単な方法は、COM 相互運用を使用することです。
別のアプローチとして、Luaを使用してCLRオブジェクトをインスタンス化し、実行して、結果を返すことができます。