Тип проекта Visual C ++, который будет использоваться для взаимодействия - PullRequest
0 голосов
/ 01 октября 2011

Я пытаюсь изучить Interop из C # и C ++ / CLI. Я начинаю с создания проекта C ++ / CLI. В большинстве примеров, которые я нашел, говорится о взаимодействии с COM, однако, когда я создаю проект C ++ / CLI в Visual studio 2010, в рамках шаблонов проектов для проекта Visual C ++ я не вижу никаких типов для COM. Есть идеи? Также я могу создать только проект библиотеки классов Visual C ++ для использования с этой целью?

1 Ответ

1 голос
/ 02 октября 2011

Вы смешиваете это. Существует три различных способа взаимодействия с собственным кодом из управляемой программы, но вы не можете использовать их все одновременно:

  • pinvoke через атрибут [DllImport]. Подходит для собственных API в стиле C
  • взаимодействие через COM. Очень хорошо поддерживается CLR, если это подмножество автоматизации и у вас есть библиотека типов. Просто работает из коробки, никакой работы не требуется. Добавление COM в существующий собственный код, который не поддерживает COM, не будет продуктивным, если вы уже не обладаете хорошими навыками программирования COM (знайте ATL)
  • классы-оболочки, созданные на языке C ++ / CLI. Когда вышеуказанных вариантов недостаточно. Требуется для взаимодействия с нативными классами C ++.

Изучение достаточного количества C ++ / CLI для выполнения работы требует около 3 недель, для истинного изучения языка требуются многомесячные усилия. Когда вы просто используете его для написания обёрток, нужно сосредоточиться на том, как управляется #pragma, как правильно использовать шляпу и разницу между деструктором и финализатором.

Возможно, вам стоит больше узнать об этом, синтаксис очень напоминает синтаксис C ++ / CX, языковых расширений, добавленных в компилятор MSVC ++, которые поддерживают написание приложений Metro для Windows 8. Знание C ++ / CLI составляет 95%. знания C ++ / CX.

Пример класса оболочки быстрого запуска в C ++ / CLI в этот ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...