我有一个涉及两个库的项目。我试图将库添加到我的.pro文件中,但是当我编译时,我收到“找不到-lmylib1”。

INCLUDEPATH += ./lib/mylib1 \
               ./lib/mylib2

LIBS += -L"$$_PRO_FILE_PWD_/lib/mylib1" -lmylib1 \
        -L"$$_PRO_FILE_PWD_/lib/mylib2" -lmylib2


目录结构如下。

Myproject.pro
lib (directory)
     mylib1 (directory)
         mylib1.so
     mylib2 (directory)
         mylib2.so

最佳答案

为了完成@dave注释,不仅Qt Creator仅搜索名称为“ lib * .so”的文件。这是类UNIX系统上链接器的默认行为。

引用ld链接器的文档:


  -larchive
  
  [...] ld将在其路径列表中搜索
  指定的每个归档文件出现libarchive.a的次数。在系统上
  支持共享库的ld可能还会搜索带有
  .a以外的扩展名。具体来说,在ELF和SunOS系统上,ld
  将在目录中搜索扩展名为.so的库
  搜索一个扩展名为.a的文件。按照惯例,.so
  扩展名表示共享库。 [...]这种类型的档案搜索是Unix链接器的标准配置。


因此,如果您的库与lib*.alib*.so模式不匹配,则预期Qt Creator和链接器都找不到它。

07-27 13:39