Как слинковать MinGW либу с MSVC проектом, имея def-файлы?
Пытаюсь под Windows слинковать FFmpeg с проектом (через extern "C"). С MinGW 8.1.0 в тестовом проекте получилось успешно слинковать, с MSVC - ошибка. Пробема в том, что в проекте я использую STL Filesystem, которой вроде как нет в MinGW, по крайней мере я не могу с ней скомпилировать. Я использую CMake, и через него установлен 17й стандарт, так что дело не в нём.
В скачанной отсюда dev-сборке, есть def-файлы, которые вроде как должны разрешить эту проблему, или нет? Ещё нашёл такое, что каким-то образом через target_set_properties() задают флаги и ссылаются на эти def-файлы. Но в данном случае таргета не создётся.
Подскажите, как можно решить данную проблему? Большое спасибо.
Ответы (1 шт):
Вроде бы получилось, слинквалось, ошибки нет. Вот что я сделал:
- В
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.26.28801\bin\{Hostx64\x64|Hostx32\x32} лежит файлlib.exe. Его нужно добавить в переменную окруженияPath, чтобы можно было запускать как команду из консоли (хотя можете просто прописать путь целиком при вызове). - И выполнить что-то
типа:
lib /machine:x64 /def:your_lib.defилиlib /machine:x32 /def:your_lib.def, после чего выведет сообщение:Creating library your_lib.lib and object your_lib.exp.
