вызов управляемых функций c # из неуправляемого c ++ - PullRequest
16 голосов
/ 27 апреля 2010

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

Ответы [ 4 ]

9 голосов
/ 27 апреля 2010

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

5 голосов
/ 27 апреля 2010

Сначала я использовал COM-взаимодействие, но теперь я переключился на IJW (он просто работает), так как он намного проще. У меня есть оболочка C ++ / 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

1 голос
/ 27 апреля 2010

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

0 голосов
/ 27 апреля 2010

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

http://www.tech -archive.net / Архив / DotNet / microsoft.public.dotnet.framework.interop / 2005-05 / msg00030.html

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

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

Завершение управляемой C # DLL в неуправляемый проект C ++: dll.

http://www.experts -exchange.com / Программирование / Языки / .NET / Q_22006727.html

...