我从今天早上开始尝试为QT calles qxmpp编译一个XMPP库。
我尝试使用Qt Creator并进行全部构建,但是编译器找不到名为-lqxmpp0的东西而且我不知道它是什么。不幸的是,谷歌并没有帮助。
我的Qt窗口:
提前感谢您的帮助。
答案 0 :(得分: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。我希望我的回答可以提供帮助。
答案 1 :(得分:-1)
-llibrary -l library
链接时搜索名为library的库。 (第二种方法是将库作为单独的参数,仅适用于POSIX 合规,不推荐。)
在您编写此选项的命令中,它会有所不同;链接器搜索并处理库中的库和目标文件 他们是指定的。因此,'foo.o -lz bar.o'搜索库'z' 在文件foo.o之后但在bar.o之前如果bar.o指的是函数 'z',可能无法加载这些函数。
链接器搜索库的标准目录列表, 这实际上是一个名为liblibrary.a的文件。然后是链接器 使用此文件,就好像它已按名称精确指定一样。
搜索的目录包括几个标准系统目录以及您使用-L指定的任何目录。
通常,以这种方式找到的文件是库文件 - 归档文件,其成员是目标文件。链接器处理归档文件 通过它扫描定义到目前为止的符号的成员 被引用但未定义。但是,如果找到的文件是 普通的目标文件,它以通常的方式链接。唯一的 使用-l选项和指定文件名之间的区别是 -l用'lib'和'.a'包围库并搜索几个 目录。