Можно скомпилировать большое количество кода C ++, разработанного для VC ++, с помощью цепочки инструментов MinGW; однако легкость выполнения этой задачи в значительной степени зависит от того, насколько C ++ соответствует стандартам код.
Если в коде C ++ используются расширения VC ++, такие как __uuidof
, вам потребуется переписать эти части.
Вы не сможете скомпилировать код ATL & MFC с MinGW, поскольку заголовки ATL и MFC используют несколько расширений VC ++ и зависят от поведения, специфичного для VC ++:
Вы не сможете использовать сгенерированные VC ++ файлы LIB
, поэтому вы не можете использовать компоновщик MinGW ld
для связывания статических библиотек без перекомпиляции кода библиотеки в виде архива MinGW A
.
Вы можете связать с DLL с закрытым исходным кодом; однако вам нужно будет экспортировать символы DLL в виде DEF
файла и использовать dlltool
для создания соответствующего A
архива ( аналогично файлу VC ++ LIB
для каждой DLL).
Включение MinGW проекта w32api в основном означает, что код, использующий Windows C API, будет хорошо компилироваться, хотя некоторые из новых функций могут быть недоступны сразу. Например, несколько месяцев назад у меня были проблемы с компиляцией кода, в котором использовались некоторые «безопасные» функции (с суффиксом _s
), но я решил эту проблему, экспортировав символы DLL в виде DEF
, подготовка актуального A
архива и написание предварительных деклараций.
В некоторых случаях вам потребуется настроить аргументы препроцессора MinGW, cpp
, чтобы убедиться, что все заголовочные файлы включены правильно и что определенные макросы предопределены правильно.
Я рекомендую просто попробовать. Вы определенно столкнетесь с проблемами, но обычно вы можете найти решение каждой из них, выполнив поиск в Интернете или спросив кого-то. Если по какой-либо другой причине вам следует попробовать его, чтобы узнать больше о C ++, различиях между компиляторами и о том, что такое код, соответствующий стандартам.