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
Qt Creator在库中找不到函数_Qt_Ubuntu_Qt5_Glib_Gio - Fatal编程技术网

Qt Creator在库中找不到函数

Qt Creator在库中找不到函数,qt,ubuntu,qt5,glib,gio,Qt,Ubuntu,Qt5,Glib,Gio,我在Ubuntu 13.04上尝试使用 这是我的.pro文件 QT+=core QT-=gui TARGET=gsettings_test CONFIG+=console CONFIG-=app_bundle CONFIG+=link_pkgconfig PKGCONFIG+=gio-2.0 TEMPLATE=app SOURCES+=main.cpp pkg config--libs gio-2.0报告: -lgio-2.0 -lgobject-2.0 -lglib-2.0 听起来不

我在Ubuntu 13.04上尝试使用

这是我的.pro文件

QT+=core
QT-=gui
TARGET=gsettings_test
CONFIG+=console
CONFIG-=app_bundle

CONFIG+=link_pkgconfig
PKGCONFIG+=gio-2.0

TEMPLATE=app

SOURCES+=main.cpp
pkg config--libs gio-2.0报告:

-lgio-2.0 -lgobject-2.0 -lglib-2.0
听起来不错

在我的程序中,我同时使用gio/gio.h和gio/gsettingschema.h库。编译器能够从gio.h中找到函数(如g_settings_new_full()),但无法从gsettingschema.h中找到函数

我得到一个错误,比如:

undefined reference to 'g_settings_schema_source_get_default()'
这里发生了什么事

编辑:完整编译输出(由Qt Creator报告):

Libgio确切文件名:

/usr/lib/i386 linux gnu/libgio-2.0.so.0.3600.0

有用命令:

alex@MaD-pc:~$ sudo ldconfig -v | grep gio
[sudo] password for alex: 
/sbin/ldconfig.real: Can't stat /lib/i686-linux-gnu: No such file or directory
/sbin/ldconfig.real: Can't stat /usr/lib/i686-linux-gnu: No such file or directory
/sbin/ldconfig.real: Path `/lib/i386-linux-gnu' given more than once
/sbin/ldconfig.real: Path `/usr/lib/i386-linux-gnu' given more than once
    libgiomm-2.4.so.1 -> libgiomm-2.4.so.1.3.0
    libgio-2.0.so.0 -> libgio-2.0.so.0.3600.0

我知道这是相当过时的,但我最近遇到了同样的问题,发现这个问题没有任何真正的答案,并最终能够解决它。所以希望这能帮助其他有同样问题的人

这个问题与C和C++之间的函数名不同有关,所以如果你从C++代码中包含GLIB文件,你将得到<代码>未定义的引用< /代码>错误。 解决方案是将我的包含从

#include <gio/gio.h>
#include <glib.h>
#包括
#包括

extern“C”{
#包括
#包括
}

在那之后,编译(和链接!)工作得很好。

我知道这已经过时了,但我最近也遇到了同样的问题,发现这个问题没有任何真正的答案,最终能够解决它。所以希望这能帮助其他有同样问题的人

这个问题与C和C++之间的函数名不同有关,所以如果你从C++代码中包含GLIB文件,你将得到<代码>未定义的引用< /代码>错误。 解决方案是将我的包含从

#include <gio/gio.h>
#include <glib.h>
#包括
#包括

extern“C”{
#包括
#包括
}

之后,编译(和链接!)工作正常。

链接器调用是什么样子的?gio库的确切版本是什么?可能是你的太旧了。@FrankOsterfeld编译时使用的命令:
g++-o gsettings\u test main.o-lgio-2.0-lgobject-2.0-lglib-2.0-lQt5Core-lpthread
@Greenflow你:)我在Ubuntu 13.04上,所以我不认为我的gio库太旧了()嗯,是的。。顺便提一下你的编译器发现你的函数很好。编译完成了。链接器是问题所在。意味着他找不到共享库。或者库太旧,不包含函数。也许你能给我们多一点你的编译器输出。只有一个“未定义引用”很适合阅读,但很难调试。:-)问题更新(我是否发布了您需要的内容?)。链接器调用看起来如何?您的gio LIB的确切版本是什么?可能是你的太旧了。@FrankOsterfeld编译时使用的命令:
g++-o gsettings\u test main.o-lgio-2.0-lgobject-2.0-lglib-2.0-lQt5Core-lpthread
@Greenflow你:)我在Ubuntu 13.04上,所以我不认为我的gio库太旧了()嗯,是的。。顺便提一下你的编译器发现你的函数很好。编译完成了。链接器是问题所在。意味着他找不到共享库。或者库太旧,不包含函数。也许你能给我们多一点你的编译器输出。只有一个“未定义引用”很适合阅读,但很难调试。:-)问题更新(我是否发布了您需要的内容?)。
extern "C" {
#include <gio/gio.h>
#include <glib.h>
}