-1

我从今天早上开始尝试为 QT 调用 qxmpp 编译一个 XMPP 库。

我尝试使用 Qt Creator 并执行 Build All,但编译器找不到名为 -lqxmpp0 的东西,我不知道它是什么。不幸的是,谷歌没有帮助。

我的 Qt 窗口: 在此处输入图像描述

github库

提前感谢您的帮助。

4

2 回答 2

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。我希望我的回答能有所帮助。

于 2015-05-16T02:42:32.500 回答
-1

-llibrary -l 库

链接时搜索名为 library 的库。(将库作为单独参数的第二种选择仅用于 POSIX 合规性,不推荐。)

在命令中编写此选项的位置有所不同;链接器按照指定的顺序搜索和处理库和目标文件。因此,“foo.o -lz bar.o”在文件 foo.o 之后但在 bar.o 之前搜索库“z”。如果 bar.o 引用 'z' 中的函数,则可能不会加载这些函数。

链接器在标准目录列表中搜索该库,该库实际上是一个名为 liblibrary.a 的文件。然后,链接器使用这个文件,就好像它已经按名称精确指定了一样。

搜索的目录包括几个标准系统目录以及您使用 -L 指定的任何目录。

通常以这种方式找到的文件是库文件——其成员是目标文件的归档文件。链接器通过扫描归档文件来处理归档文件,其中的成员定义了迄今为止已被引用但尚未定义的符号。但是如果找到的文件是一个普通的目标文件,它会以通常的方式链接。使用 -l 选项和指定文件名的唯一区别是 -l 用“lib”和“.a”包围库并搜索多个目录。


https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

于 2015-04-28T15:49:16.533 回答