【问题标题】:include external libraries (from a subdirectory of the source-code-folder) in qt在 qt 中包含外部库(来自源代码文件夹的子目录)
【发布时间】:2011-10-17 18:30:07
【问题描述】:

我对 qt 处理库的方式有点困惑。我的计划是将我需要的外部库放入源目录,这样就不必将它们安装到系统中。由于这似乎不起作用(见下文),我想知道这通常是一个坏主意还是有什么技巧?

所以我编译了这些库并将它们放入 /mysubdir。在我添加的 .pro 文件中

LIBS+= -L"mysubdir" -l"mylib"

我得到了编译器错误 [projectname] 错误 2 并且不知道它是什么意思。

【问题讨论】:

  • 你的平台是什么?你能发布更多的编译器输出吗?就像例如错误 2 之前的内容。
  • Ubuntu 10.04 “Lucid Lynx”(32 位)
  • hm 最后的编译器输出是“警告:控制到达非无效函数的结尾”。抱歉,我没有发现任何可疑之处。
  • 奇怪的是,我通过取消注释 `pkg-config 让这个东西运行了一次,但我无法在我的桌面(相同的操作系统)上重现它。而且这似乎不是正确的方法......
  • 是的,“错误 2”只是 make 错误,它可能意味着任何事情。 “mylib”是否仅包含库名称(不包含 .so 扩展名)?您仔细检查了“mysubdir”以正确指向您的库文件夹?

标签: qt libraries subdirectory


【解决方案1】:

传递给-L 的参数必须是绝对路径。请尝试使用完整路径或至少-L./wcslibc。虽然我不确定./ 是否会被正确识别。您可以像这样在 qmake 中获取当前路径:

LIBS += -L$${PWD}/wcslibc -lwcs

【讨论】:

  • 谢谢!!现在它似乎工作了。但是为什么它必须是 *.so 文件呢?我认为 *.a 文件是“图书馆”...
  • @enam: .so 文件仍然是库,它们只是共享库文件。
  • 现在我尝试在我的桌面上运行这个东西。而且它不起作用:-(。使用LIBS += -L{PWD}/wcslibc -lwcs,找不到库。使用LIBS += $${PWD}/wcslibc/libwcs.so.4.8.2,在编译时找到库,但在运行程序时找不到。我想我曾经在笔记本电脑上做过将库“正确”安装到系统中,这似乎有所不同。顺便说一句,我在一个非常相似的问题中包含似乎已经奏效(stackoverflow.com/questions/718447/…
  • 如果编译时找到库,运行时没有找到,需要设置库运行路径。 LIBS += -L$${PWD}/wcslibc -Wl,-rpath,$${PWD}/wcslibc -lwcs 应该可以工作,这就是我过去的工作方式...我不知道您提到的方法 (LIBS += $${PWD}/wcslibc/libwcs.so.4.8.2) - 这可能是最近的一些 qmake 功能,请尝试将-Wl,-rpath,$${PWD}/wcslibc 添加到它。跨度>
  • 我试过`LIBS+= $${PWD}/wcslibc/libwcs.so.4.8.2 -Wl,-rpath,$${PWD}/wcslibc`。它编译时带有警告“必须在命令行上指定包名称”(如果有帮助的话)。但是在运行时我仍然得到加载共享库时出错:libwcs.so.4:无法打开共享对象文件:没有这样的文件或目录
猜你喜欢
  • 2013-02-18
  • 1970-01-01
  • 2016-05-23
  • 2020-09-16
  • 2017-07-11
  • 2011-12-14
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
相关资源
最近更新 更多