C++ 包含源处的Qt未定义引用
我对Qt环境有一些问题。我只想使用环境QT到控制台应用程序,我正在用C++编写代码 **我必须使用交叉编译器。 **当然,我已经在Qt中正确安装了 另外,我必须使用dbus-1.6.8。这是一个重要的条件,,因为我正在为嵌入式系统编写代码,库应该和设备中使用的库相同 我将带有源代码的目录放入带有项目的目录,并修改了*.pro文件添加路径C++ 包含源处的Qt未定义引用,c++,qt,dbus,C++,Qt,Dbus,我对Qt环境有一些问题。我只想使用环境QT到控制台应用程序,我正在用C++编写代码 **我必须使用交叉编译器。 **当然,我已经在Qt中正确安装了 另外,我必须使用dbus-1.6.8。这是一个重要的条件,,因为我正在为嵌入式系统编写代码,库应该和设备中使用的库相同 我将带有源代码的目录放入带有项目的目录,并修改了*.pro文件添加路径 TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG -= qt INCLUDEPATH
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
INCLUDEPATH += ./dbus-1.6.8
在此之后,我将main.cpp right main头文件包括所有下一个必要的头文件
#include <dbus/dbus.h>
当然上述函数存在于源目录中我已选中。尽管如此,Qt没有找到这些声明
怎么了
PS:此外,我添加了树目录,当然这不是全部,但最重要的目录是可见的
.
├── bus
├── cmake
│ ├── bus
│ ├── dbus
│ ├── doc
│ ├── modules
│ ├── test
│ │ └── name-test
│ └── tools
├── dbus
├── doc
├── m4
...
....
....
并且只有dbus直接目录
├── dbus
│ ├── dbus-address.c
│ ├── dbus-address.h
│ ├── dbus-arch-deps.h
│ ├── dbus-arch-deps.h.in
│ ├── dbus-auth.c
│ ├── dbus-auth.h
│ ├── dbus-auth-script.c
│ ├── dbus-auth-script.h
│ ├── dbus-auth-util.c
│ ├── dbus-bus.c
│ ├── dbus-bus.h
│ ├── dbus-connection.c
│ ├── dbus-connection.h
│ ├── dbus-connection-internal.h
│ ├── dbus-credentials.c
│ ├── dbus-credentials.h
│ ├── dbus-credentials-util.c
│ ├── dbus-dataslot.c
│ ├── dbus-dataslot.h
│ ├── dbus-errors.c
│ ├── dbus-errors.h
│ ├── dbus-file.c
│ ├── dbus-file.h
│ ├── dbus-file-unix.c
│ ├── dbus-file-win.c
│ ├── dbus.h // main header
│ ├── dbus-hash.c
│ ├── dbus-hash.h
│ ├── dbus-internals.c
│ ├── dbus-internals.h
│ ├── dbus-keyring.c
│ ├── dbus-keyring.h
│ ├── dbus-list.c
.....
.....
.....
如果您已经编译了dbus,那么应该会得到一个名为
libdbus-1的库
在Qt.pro文件中,添加库的路径并链接库
例如:
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
INCLUDEPATH += ./dbus-1.6.8
LIBS += -L./dbus-1.6.8 -ldbus-1
您有更多关于DBU和相关库的信息。您不需要从源代码处编译和安装dbus。您可以使用apt-get安装它。无论如何,这取决于您:)在dbus direcytory中,我还发现这个libdbus-1.la,libdbus internal.la
它也共享了库,但可能不是这样。我试着重新编译这个。行LIBS+=-L./dbus-1.6.8-ldbus-1
给我这个时间错误找不到-ldbus-1
,所以这表明我仍然没有这个库。记住,我需要这个图书馆来建造DIFRENT建筑Thx@Mbed您是安装了库还是刚刚编译了库?如果您输入根目录(在您的示例中为dbus-1.6.8
),是否有路径dbus/.libs/
?在那个目录中,你应该有。所以我之前说过。在.pro文件中,应该将LIBS设置到正确的目录。但是那些LIBS在哪里?LIBS
变量必须具有库所在位置的路径。不要在-l
之后写lib
,只写库名:dbus-1
@Mbded,注意:如果库名为libdbus-1,则不是-libdbus-1
而是-ldbus-1
事件。因此
!这不是名称的一部分,而是编译器选项-l
!好消息!:)在我看来,您提到的项目配置不应该是问题所在,因为如果INCLUDEPATH
正在工作,并且项目找到了头,LIBS
也应该工作。库是否真的位于/dbus-1.6.8/dbus/.libs
中,或者您是否在其他子目录(如cmake)中找到了.so?
├── dbus
│ ├── dbus-address.c
│ ├── dbus-address.h
│ ├── dbus-arch-deps.h
│ ├── dbus-arch-deps.h.in
│ ├── dbus-auth.c
│ ├── dbus-auth.h
│ ├── dbus-auth-script.c
│ ├── dbus-auth-script.h
│ ├── dbus-auth-util.c
│ ├── dbus-bus.c
│ ├── dbus-bus.h
│ ├── dbus-connection.c
│ ├── dbus-connection.h
│ ├── dbus-connection-internal.h
│ ├── dbus-credentials.c
│ ├── dbus-credentials.h
│ ├── dbus-credentials-util.c
│ ├── dbus-dataslot.c
│ ├── dbus-dataslot.h
│ ├── dbus-errors.c
│ ├── dbus-errors.h
│ ├── dbus-file.c
│ ├── dbus-file.h
│ ├── dbus-file-unix.c
│ ├── dbus-file-win.c
│ ├── dbus.h // main header
│ ├── dbus-hash.c
│ ├── dbus-hash.h
│ ├── dbus-internals.c
│ ├── dbus-internals.h
│ ├── dbus-keyring.c
│ ├── dbus-keyring.h
│ ├── dbus-list.c
.....
.....
.....
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
INCLUDEPATH += ./dbus-1.6.8
LIBS += -L./dbus-1.6.8 -ldbus-1