Возможный назвать код C++ от C#?

Похоже, вы ищете пользовательский интерфейс Chrome, как приложение Google Maps для отображения направлений. Google Maps SDK для iOS раскроет вам карту, но вы несете ответственность за дополнительную навигацию Chrome.

Вы можете использовать Google Directions API для запроса направлений, а затем использовать закодированный путь, возвращаемый службой, чтобы нарисовать GMSPolyline , используя GMSPath pathFromEncodedPath: метод.

84
задан Peter Mortensen 4 October 2017 в 21:09
поделиться

6 ответов

Одним из простых способов вызова 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();

Посмотрите это сообщение в блоге , чтобы получить более подробный пример.

87
ответ дан 24 November 2019 в 08:38
поделиться

P / Invoke - хорошая технология, и она работает довольно хорошо, за исключением проблем с загрузкой целевого файла DLL. Мы обнаружили, что лучший способ сделать это - создать статическую библиотеку собственных функций и связать ее с проектом Managed C ++ (или C ++ / CLI), который от нее зависит.

7
ответ дан 24 November 2019 в 08:38
поделиться

Я не знаком с упомянутой вами библиотекой, но в целом есть несколько способов сделать это:

  • P / Invoke для экспортируемых библиотечных функций
  • Добавление ссылка на библиотеку типов COM (в случае, если вы имеете дело с объектами COM).
7
ответ дан 24 November 2019 в 08:38
поделиться

Да, он называется P / Invoke .

Вот отличный ресурс для его использования с Win32 API:

http: // www. pinvoke.net/[1260pting

3
ответ дан 24 November 2019 в 08:38
поделиться

Конечно. Эта статья является хорошим примером того, что вы можете сделать, чтобы начать работу над этим.

Мы делаем это с C # на наших устройствах Windows Mobile, используя P / Invoke .

1
ответ дан 24 November 2019 в 08:38
поделиться

Используемая для этого технология называется P / Invoke ; вы можете искать статьи по этой теме. Обратите внимание, что это для вызова C из C #, а не для C ++. Поэтому вам нужно обернуть свой код C ++ в оболочку C, которую экспортирует ваша DLL.

1
ответ дан 24 November 2019 в 08:38
поделиться
Другие вопросы по тегам:

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