Одним из решений является создание управляемой библиотеки классов C ++ с обычными функциями __declspec(dllexport)
, которые вызывают управляемые методы в указанной библиотеке классов C #.
Пример - файл кода C ++ в управляемом проекте C ++:
#include "stdafx.h"
__declspec(dllexport) int Foo(int bar)
{
csharpmodule::CSharpModule mod;
return mod.Foo(bar);
}
Модуль C # (отдельный проект в решении):
namespace csharpmodule
{
public class CSharpModule
{
public int Foo(int bar)
{
MessageBox.Show("Foo(" + bar + ")");
return bar;
}
}
}
Обратите внимание, что я демонстрирую, что это фактический вызов .NET с использованием вызова System.Windows.Forms.MessageBox.Show
.
Пример базового (не CLR) консольного приложения Win32:
__declspec(dllimport) int Foo(int bar);
int _tmain(int argc, _TCHAR* argv[])
{
std::cout << Foo(5) << std::endl;
return 0;
}
Не забудьте связать консольное приложение Win32 с файлом .lib
, полученным в результате сборки управляемого проекта C ++.