Один из простых способов вызова C ++ - создать сборку оболочки в C ++ / CLI. В C ++ / CLI вы можете вызывать неуправляемый код, как если бы вы писали собственный код, но вы можете вызывать код C ++ / CLI из C #, как если бы он был написан на C #. Язык в основном был разработан с возможностью взаимодействия с существующими библиотеками в качестве «убийственного приложения».
Например - скомпилируйте это с переключателем / clr
P / Invoke - хорошая технология, и она работает достаточно хорошо, за исключением проблем с загрузкой целевого файла DLL. Мы обнаружили, что лучший способ сделать это - создать статическую библиотеку собственных функций и связать ее с проектом Managed C ++ (или C ++ / CLI), который от нее зависит.
Используемая для этого технология называется P / Invoke ; вы можете искать статьи по этой теме. Обратите внимание, что это для вызова C из C #, а не C ++. Поэтому вам нужно обернуть свой код C ++ в оболочку C, которую экспортирует ваша DLL.
Ответы:
Один из простых способов вызова C ++ - создать сборку оболочки в C ++ / CLI. В C ++ / CLI вы можете вызывать неуправляемый код, как если бы вы писали собственный код, но вы можете вызывать код C ++ / CLI из C #, как если бы он был написан на C #. Язык в основном был разработан с возможностью взаимодействия с существующими библиотеками в качестве «убийственного приложения».
Например - скомпилируйте это с переключателем / clr
#include "NativeType.h" public ref class ManagedType { NativeType* NativePtr; public: ManagedType() : NativePtr(new NativeType()) {} ~ManagedType() { delete NativePtr; } void ManagedMethod() { NativePtr->NativeMethod(); } };
Затем в C # добавьте ссылку на сборку ManagedType и используйте ее следующим образом:
ManagedType mt = new ManagedType(); mt.ManagedMethod();
Ознакомьтесь с этим сообщением в блоге, чтобы получить более объясненный пример.
источник
Я не знаком с упомянутой вами библиотекой, но в целом есть несколько способов сделать это:
источник
P / Invoke - хорошая технология, и она работает достаточно хорошо, за исключением проблем с загрузкой целевого файла DLL. Мы обнаружили, что лучший способ сделать это - создать статическую библиотеку собственных функций и связать ее с проектом Managed C ++ (или C ++ / CLI), который от нее зависит.
источник
Да, это называется P / Invoke .
Вот отличный ресурс для использования с Win32 API:
http://www.pinvoke.net/
источник
Уверенный. Эта статья - хороший пример того, что вы можете сделать для начала.
Мы делаем это из C # на наших устройствах Windows Mobile с помощью P / Invoke .
источник
Используемая для этого технология называется P / Invoke ; вы можете искать статьи по этой теме. Обратите внимание, что это для вызова C из C #, а не C ++. Поэтому вам нужно обернуть свой код C ++ в оболочку C, которую экспортирует ваша DLL.
источник
Вы рассматривали Apache Thrift?
http://thrift.apache.org/
Кажется, это очень удобное решение.
источник