Как создать смешанную управляемую / нативную C ++ dll в VS2010? - PullRequest
4 голосов
/ 08 июня 2011

Я хочу создать dll с управляемым интерфейсом C ++, но реальный код, работающий под ним, является родным C ++.

В настоящее время мы используем COM (STA) для взаимодействия с управляемым кодом, но теперь мыхочу вызвать модуль с ThreadPool, который не будет разрешать потоки STA.Мы хотели бы избежать перекодирования модуля для MTA COM.

Я задавал этот вопрос раньше, а также другим, и, похоже, ответы не касаются основного вопроса: как настроить проект.Я использую VS2010, и хотел бы изложить шаги.Я попытался начать с управляемой библиотеки (C ++ Class Library) и добавить неуправляемые классы, а также MFC DLL (мы используем некоторые классы MFC, но в конечном итоге хотели бы их обработать) и добавить управляемые классы.Кажется, я никогда не смогу заставить его скомпилироваться.

Может кто-нибудь подсказать мое невежество и явно изложить шаги, начиная с типа проекта?

1 Ответ

4 голосов
/ 08 июня 2011

Начиная с C ++ / CLI, Visual Studio больше не производит сборки в смешанном режиме (как вы описали) при компиляции. «Собственные» биты C ++ скомпилированы в непроверяемый CIL.

Однако, возможно встроить статическую библиотеку в вашу сборку, которая компилируется изначально, и эта встроенная библиотека будет объединена без изменений. То есть, если вы статически связываетесь с собственной статической библиотекой, вы получите сборку смешанного режима, которую вы ищете.

...