Ответ 1
Или используйте мой проект, который позволяет С# создавать неуправляемый экспорт. Они могут быть использованы так, как если бы они были написаны на родном языке.
Как вызвать управляемые функции С# из неуправляемого С++
Или используйте мой проект, который позволяет С# создавать неуправляемый экспорт. Они могут быть использованы так, как если бы они были написаны на родном языке.
Сначала я использовал 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
Я использовал классы оболочки С++/CLI описанные здесь, и это было относительно легко реализовать.
RE: Как вызвать управляемый код С# из неуправляемого приложения С++?
Вызов управляемых COM-объектов .NET С# из неуправляемого кода С++...
http://www.codeproject.com/KB/cs/ManagedCOM.aspx
Обтекание управляемой С# DLL в неуправляемом проекте С++: dll.
http://www.experts-exchange.com/Programming/Languages/.NET/Q_22006727.html