Как мне вызвать управляемый код .NET из моего неуправляемого кода C++ в Windows и наоборот?
Вопрос
У меня есть приложение на чистом C++, разработанное с использованием VC 6.0.Я хотел бы, чтобы это приложение использовало библиотеку, разработанную на C#.Как мне вызвать методы библиотеки C# из моего собственного исполняемого файла?Я не хочу преобразовывать свое неуправляемое собственное приложение C++ в управляемый код.Аналогично, как мне сделать обратное?Является ли PInvoke единственным вариантом?Я был бы признателен за любые ссылки или указатели на то же самое.
Решение
Чтобы вызвать управляемый код из неуправляемого C++, используйте ClrCreateManagedInstance, или экспортируйте свои типы в управляемую сборку как видимые COM и используйте COM.Чтобы вызвать неуправляемый код из управляемого, используйте COM или P/Invoke.
Другие советы
Основная линия Microsoft в этом вопросе — использование COM-взаимодействия.Однако есть еще один вариант, иногда называемый «Обратный P/Invoke». Есть интересная запись в блоге. здесь и еще немного здесь
Кроме того, если у вас есть Delphi.NET (ныне несуществующий), этот язык позволяет вам экспортировать статические методы, как и любую функцию dll, тогда вы можете вызывать сборку Delphi.NET, как обычную собственную Dll.