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

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

17
задан user186246 27 April 2010 в 09:17
поделиться

4 ответа

Сначала я использовал 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

5
ответ дан 30 November 2019 в 14:17
поделиться

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

1
ответ дан 30 November 2019 в 14:17
поделиться

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

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

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

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

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

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

0
ответ дан 30 November 2019 в 14:17
поделиться

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

9
ответ дан 30 November 2019 в 14:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: