Wywoływanie kodu C# Z C++
Muszę być w stanie wywołać dowolne funkcje C# z C++. http://www.infoq.com/articles/in-process-java-net-integration sugeruje użycie ICLRRuntimeHost:: ExecuteInDefaultAppDomain (), ale pozwala mi to tylko na wywołanie metod o takim formacie: int method(string arg)
Jaki jest najlepszy sposób na wywołanie dowolnych funkcji C#?
6 answers
Skompiluj kod C++ za pomocą znacznika / clr . Dzięki temu możesz wywołać dowolny kod. NET ze względną łatwością.
Na przykład:
#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;
}
Czy to się liczy jako " C++"? Cóż, to oczywiście nie jest standardowy C++ ...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-02 12:50:33
Istnieje kilka sposobów, aby aplikacja C++ wywoływała funkcje w C# DLL.
- Używanie C++ / CLI jako pośredniego DLL
- Odwróć P / Wywołaj
- Korzystanie z COM
- Using CLR Hosting (
ICLRRuntimeHost::ExecuteInDefaultAppDomain()
) - Komunikacja Interprocess (IPC)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:30:52
Jeśli nie obchodzi cię, czy twój program C++ (lub jego część) zostanie skompilowany z /clr, możesz użyć C++/CLI, aby po prostu wywołać dowolny kod.NET (o ile dodasz do niego odniesienie). Wypróbuj ten artykuł .
EDIT: Oto fajny tutorial
Inną drogą jest to, aby Twój kod C# był wyświetlany jako COM.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-22 21:58:07
Najprostszym sposobem jest użycie COM interop.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-22 18:41:05
Możesz użyć owijarki COM wokół kodu C# skompilowanego do biblioteki DLL.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-22 19:23:45
Jako alternatywne podejście można użyć Lua do tworzenia instancji obiektów CLR, wykonywania i zwracania wyników.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-22 21:18:38