在 Qt 5.4 上编译 QXmpp 库时出错
Posted
技术标签:
【中文标题】在 Qt 5.4 上编译 QXmpp 库时出错【英文标题】:Error when compiling QXmpp library on Qt 5.4 【发布时间】:2015-04-28 15:34:48 【问题描述】:我从今天早上开始尝试为 QT 调用 qxmpp 编译一个 XMPP 库。
我尝试使用 Qt Creator 并执行 Build All,但编译器找不到名为 -lqxmpp0 的东西,我不知道它是什么。很遗憾,Google 没有提供帮助。
我的 Qt 窗口:
github Library
提前感谢您的帮助。
【问题讨论】:
@cmannett85 这里:github.com/qxmpp-project/qxmpp/blob/master/qxmpp.pri 它看起来是在尝试在库之前构建示例,或者库已经构建但它在 g++ 找不到的地方。 【参考方案1】:请检查 qxmpp.pri 中是否有类似的定义:
QXMPP_INCLUDEPATH = $$PWD/src/base $$PWD/src/client $$PWD/src/server
# Determine library name
CONFIG(debug, debug|release)
QXMPP_LIBRARY_NAME = qxmpp_d
else
QXMPP_LIBRARY_NAME = qxmpp
# Determine library type (shared or staticlib)
isEmpty(QXMPP_LIBRARY_TYPE)
android | ios
QXMPP_LIBRARY_TYPE = staticlib
else
QXMPP_LIBRARY_TYPE = shared
你有没有看到 QXMPP_LIBRARY_NAME 定义了库的名称,还要检查 examples.pro 中是否包含 qxmpp.pri。希望我的回答能帮到你。
【讨论】:
还要检查 qxmpp.pro 中是否在 src 之前添加子目录示例【参考方案2】:-图书馆 -l 库
链接时搜索名为 library 的库。 (将库作为单独参数的第二种选择仅适用于 POSIX 合规性,不推荐。)
在命令的哪个位置编写此选项会有所不同;链接器在 它们被指定的顺序。因此,“foo.o -lz bar.o”搜索库“z” 在文件 foo.o 之后但在 bar.o 之前。如果 bar.o 指的是函数 ‘z’,那些函数可能无法加载。
链接器搜索库的标准目录列表, 这实际上是一个名为 liblibrary.a 的文件。 然后链接器 使用这个文件,就好像它是按名称精确指定的一样。
搜索的目录包括几个标准系统目录以及您使用 -L 指定的任何目录。
通常以这种方式找到的文件是库文件——其成员是目标文件的存档文件。链接器通过以下方式处理归档文件 扫描它的成员,这些成员定义了迄今为止的符号 被引用但未定义。但是如果找到的文件是 普通的目标文件,它以通常的方式链接。唯一的 使用 -l 选项和指定文件名之间的区别是 that -l 用“lib”和“.a”包围库并搜索几个 目录。
https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
【讨论】:
感谢您的回复。老实说,我不太明白你的意思。我必须在 Qt 中进行一些更改吗?以上是关于在 Qt 5.4 上编译 QXmpp 库时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 Github Actions 为 Windows 编译 QT 应用程序时出错
在 Mavericks 上编译 znorts blockparser - 出错
在 macOS 10.15.6 上编译 Apache ORC 时出错