C ++ Windows двоичные файлы: условия, которые будут использоваться с MinGW

Я новичок в C ++, и сейчас я борюсь с компиляцией и компоновкой.
Недавно я использовал cmake и make для перекомпиляции библиотеки (mlpack), которая использует Boost (Cmake не находит boost 1.51 (windows 8)).

В первой попытке я скачал скомпилированные двоичные файлы для Windows. Это не сработало, и мне объяснили, что двоичные файлы, которые я использовал, были для MSVC, а не для MinGW, поэтому проблемы. И действительно, после перекомпиляции boost с использованием MinGW все прошло нормально.

Здесь я просто хотел бы получить представление о том, какие будут различия между двоичными файлами для MSVC и MinGW. Я (наивно?) Думал, что двоичные файлы специфичны для ОС / процессора. Что содержат двоичные файлы для MSVC, которые делают их непригодными для MinGW?

2

Решение

Относительно легко комбинировать артефакты (статические / разделяемые библиотеки), создаваемые MSVC и MinGW (это относится к другим компиляторам C в целом), если они экспортируют чистый C API. Это делает C API очень мобильным, и это одна из главных причин, почему так много популярных библиотек по-прежнему предпочитают использовать чистый C API.

История с C ++ совершенно другая. Наиболее известными препятствиями для правильной совместимости между артефактами, создаваемыми различными компиляторами C ++, являются различия в название искажения а также двоичный интерфейс приложения (ABI). Это относится ко всем компиляторам C ++ в целом, а не только к MinGW и MSVC. Если вы хотите узнать больше о проблемах взаимодействия между MSVC и MinGW, в частности, я рекомендую вам прочитать следующие статьи:

  1. Функциональная совместимость библиотек, созданных разными брендами компиляторов
  2. Бинарно-совместимые интерфейсы C ++
2

Другие решения

Быть простым.

Винда говорит French,
МинГВ говорит French, German а также English,
Unix системы говорят German,


Двоичные файлы MSVC написаны на French,
Двоичные файлы MinGW написаны на FrenchAngloGerman,
Двоичные файлы UNIX написаны на German,


Windows нуждается в MinGW для перевода некоторых German а также English в French прежде чем он сможет понять все.


MinGW не похож на другие программы. Это в основном мини ОС между Windows и Linux. Так что для правильной работы в основном нужна измененная форма двоичных файлов. Тот факт, что вы разрабатываете свою программу для Windows на MinGW, не означает, что она будет работать на чистой Windows без каких-либо проблем. Вам все еще нужно отправлять или распространять библиотеки MinGW и исполняемые файлы, которые вы использовали в своей программе.

1

По вопросам рекламы [email protected]