Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 包含源处的Qt未定义引用_C++_Qt_Dbus - Fatal编程技术网

C++ 包含源处的Qt未定义引用

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

我对Qt环境有一些问题。我只想使用环境QT到控制台应用程序,我正在用C++编写代码 **我必须使用交叉编译器。 **当然,我已经在Qt中正确安装了

另外,我必须使用dbus-1.6.8。这是一个重要的条件,,因为我正在为嵌入式系统编写代码,库应该和设备中使用的库相同

我将带有源代码的目录放入带有项目的目录,并修改了*.pro文件添加路径

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