CodeLite MinGW32 не может ссылаться на файл .dll.a

Недавно я перешел на CodeLite для разработки C и пытался заставить сигилу работать с MinGW32. Я пытался включить его локально из настроек проекта по пути F:/sigil-mingw32, где находится библиотека.

У меня для параметра Compiler/Include Paths установлено значение F:/sigil-mingw32/include, а для моего пути компоновщика в Linker/Libraries Search Path установлено значение F:/sigil-mingw32/lib соответственно.

Я установил в свой Linker/Libraries библиотеку libsigil.dll.a, но когда я создаю свой проект, я получаю результат:

c:/Program Files (x86)/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/8.1.0/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -l-libsigil.dll

И тогда сборка терпит неудачу. Почему компоновщик исключает суффикс .a из DLL-файла библиотеки?


person Boyfinn    schedule 10.01.2021    source источник


Ответы (1)


Оказывается, CodeLite может напрямую связывать импортированные библиотеки без необходимости добавлять полный путь в настройки компоновщика. В отличие от CodeBlocks, компоновщик не удалит префикс lib в библиотеках dll.a, если указан прямой путь к файлу библиотеки. Таким образом, вместо path/lib/libsigil.dll.a в Путь поиска компоновщика/библиотек указывается только расположение папки библиотеки, а параметр Libraries будет передан в gcc. напрямую, что исключает префикс lib. Поэтому достаточно установить параметр как sigil вместо libsigil.dll.a.

person Boyfinn    schedule 10.01.2021