首页 > 解决方案 > CodeLite MinGW32 无法链接到 .dll.a 文件

问题描述

我最近搬到 CodeLite 进行 C 开发,我一直在努力让 sigil 为 MinGW32 工作。我一直在尝试使用F:/sigil-mingw32库所在的路径从项目设置中将其包含在本地。

我将参数“编译器/包含路径”设置为F:/sigil-mingw32/include链接器/库搜索路径”中的链接器路径分别设置F:/sigil-mingw32/lib为。

我已经将我的“链接器/库”设置为包含库“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

然后构建失败。为什么链接器从库 dll 文件中排除 .a 后缀?

标签: clinkermingwmingw32codelite

解决方案


事实证明,CodeLite 可以直接链接导入的库,而无需将完整路径添加到链接器设置中。与 CodeBlocks 不同,当给出库文件的直接路径时,链接器不会删除 dll.a 库中的“lib”前缀。因此,而不是“path/lib/libsigil.dll.a”,Linker/Libraries Search Path中只提供了库文件夹的位置,并且Libraries参数将直接传递给 gcc,其中不包括“lib”前缀。所以将参数设置为“sigil”而不是“libsigil.dll.a”就足够了。


推荐阅读