Вызов управляемых функций С# из неуправляемого С++

Как вызвать управляемые функции С# из неуправляемого С++

Ответы

Ответ 1

Или используйте мой проект, который позволяет С# создавать неуправляемый экспорт. Они могут быть использованы так, как если бы они были написаны на родном языке.

Ответ 2

Сначала я использовал COM-взаимодействие, но теперь я переключился на IJW (он просто работает), поскольку он намного проще. У меня есть оболочка С++/CLR DLL (компиляция с /clr ).

Простой пример (использование статики для облегчения вызовов):

namespace MyClasses       
{
    public class MyClass
    {
        public static void DoSomething()
        {
            MessageBox.Show("Hello World");
        }
    }
}

В DLL я могу ссылаться на пространства имен следующим образом:

using namespace MyClasses;

И назовите его:

__declspec(dllexport) void CallManagedCode()
{
    MyClass::DoSomething();
}

Теперь у вас есть неуправляемый DLL-экспорт "CallManagedCode", который вызывает управляемый код.

Конечно, вам также нужно преобразовать данные между управляемой/неуправляемой границей. Начиная с VS2008, Microsoft включает помощника маршала для преобразования между неуправляемыми и управляемыми типами. См. http://msdn.microsoft.com/en-us/library/bb384865.aspx

Ответ 3

Я использовал классы оболочки С++/CLI описанные здесь, и это было относительно легко реализовать.

Ответ 4

RE: Как вызвать управляемый код С# из неуправляемого приложения С++?

http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.interop/2005-05/msg00030.html

Вызов управляемых COM-объектов .NET С# из неуправляемого кода С++...

http://www.codeproject.com/KB/cs/ManagedCOM.aspx

Обтекание управляемой С# DLL в неуправляемом проекте С++: dll.

http://www.experts-exchange.com/Programming/Languages/.NET/Q_22006727.html