Как слинковать MinGW либу с MSVC проектом, имея def-файлы?

Пытаюсь под Windows слинковать FFmpeg с проектом (через extern "C"). С MinGW 8.1.0 в тестовом проекте получилось успешно слинковать, с MSVC - ошибка. Пробема в том, что в проекте я использую STL Filesystem, которой вроде как нет в MinGW, по крайней мере я не могу с ней скомпилировать. Я использую CMake, и через него установлен 17й стандарт, так что дело не в нём.

В скачанной отсюда dev-сборке, есть def-файлы, которые вроде как должны разрешить эту проблему, или нет? Ещё нашёл такое, что каким-то образом через target_set_properties() задают флаги и ссылаются на эти def-файлы. Но в данном случае таргета не создётся.

Подскажите, как можно решить данную проблему? Большое спасибо.

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Παν μέτρον άριστον

Вроде бы получилось, слинквалось, ошибки нет. Вот что я сделал:

  1. В C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\{Hostx64\x64|Hostx32\x32} лежит файл lib.exe. Его нужно добавить в переменную окружения Path, чтобы можно было запускать как команду из консоли (хотя можете просто прописать путь целиком при вызове).
  2. И выполнить что-то типа: lib /machine:x64 /def:your_lib.def или lib /machine:x32 /def:your_lib.def, после чего выведет сообщение: Creating library your_lib.lib and object your_lib.exp.
→ Ссылка