у вас есть два варианта, один называется ijw, «он просто работает», где вы можете написать управляемый c ++ и вызвать неуправляемый c ++. Другой вариант требует использования pinvoke.
если вы используете pinvoke, у вас будет что-то вроде этого
C #
somefunction("str1", "str2", "str3", "str4");
[DllImport(@"myproj.dll", EntryPoint = "somefunction")]
public static extern IntPtr SomeFunction([MarshalAs(UnmanagedType.LPWStr)]string jarg1, [MarshalAs(UnmanagedType.LPWStr)]string jarg2, [MarshalAs(UnmanagedType.LPWStr)]string jarg3, [MarshalAs(UnmanagedType.LPWStr)]string jarg4);
C ++
extern "C" __declspec(dllexport) void* __stdcall somefunction(wchar_t * jarg1, wchar_t * jarg2, wchar_t * jarg3, wchar_t * jarg4)
{
//do some stuff with strings
}
если вы используете SWIG, swig попытается автоматически сгенерировать приведенный выше код, но это суровый мастер.
Я однажды использовал управляемый c ++, но не совсем помню, что я об этом думал.