0

我无法链接我的应用程序:我收到“未定义的对符号‘gdk_pixbuf_major_version’的引用”

我是一名 WIN32 程序员,这是我第一次涉足 Linux。我的目标设备是 Ubuntu xenial,GTK+ 3.18.9。从 gdk_pixbuf_features.h 中,Gdk-Pixbuf 版本是 2.32.2。

我有一个静态库 (_rUtilitiesLinuxx64) 可以执行此操作: GdkPixBuffMajorRunTime=gdk_pixbuf_major_version; 静态库构建得很好。

我有一个链接到 _rUtilitiesLinuxx64 的应用程序 (_rUtilitiesTestLinux)。

我的假设是 gdk_pixbuf_major_version 实际上在 Gdk_Pixbuf 库中(/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so)

当我尝试构建我的应用程序时,我得到一个未定义的对“gdk_pixbuf_major_version”的引用

似乎 gdk_pixbuf_major_version 不包含在 libgdk_pixbuf-2.0 中?

Invoking ld
1>    g++     -o "/home/rob/projects/_rUtilitiesTestLinux/bin/x64/Debug/_rUtilitiesTestLinux.out" -Wl,--no-undefined -Wl,-L/home/rob/projects/_rUtilitiesLinux/bin/x64/Debug -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack 
/home/rob/projects/_rUtilitiesTestLinux/obj/x64/Debug/main.o 
/home/rob/projects/_rUtilitiesTestLinux/obj/x64/Debug/TestClass.o 

/usr/lib/x86_64-linux-gnu/libgtk-3.so 
/usr/lib/x86_64-linux-gnu/libgdk-3.so 
/usr/lib/x86_64-linux-gnu/libgio-2.0.so 
/usr/lib/x86_64-linux-gnu/libgobject-2.0.so 
/usr/lib/x86_64-linux-gnu/libpthread.so 
/usr/lib/x86_64-linux-gnu/libglib-2.0.so 
/usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so 
-l_rUtilitiesLinuxx64

1>    /usr/bin/ld: 
/home/rob/projects/_rUtilitiesLinux/bin/x64/Debug/lib_rUtilitiesLinuxx64.a(_rGraphwSystem.o):/usr/bin/ld: 
/home/rob/projects/_rUtilitiesLinux/bin/x64/Debug/lib_rUtilitiesLinuxx64.a(_rGraphwSystem.o): undefined reference to symbol 'gdk_pixbuf_major_version'

1>    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so: error adding symbols: DSO missing from  undefined reference to symbol 'gdk_pixbuf_major_version'
1>    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so: error adding symbols: DSO missing from command line
1>    command line
1>    collect2: error: ld returned 1 exit status
1>    collect2: error: ld returned 1 exit status
1>    /usr/bin/ld : error : undefined reference to symbol 'gdk_pixbuf_major_version'
1>    /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so : error : DSO missing from command line
1>    collect2 : error : ld returned 1 exit status

那么,gdk_pixbuf_major_version 在哪里呢?

4

2 回答 2

0

这不是一个答案

好吧,我从来没有深入了解这一点。我的未定义引用在上周不断出现,没有任何押韵或理由,没有更改库(没有添加或删除它们),也没有更改引用 GdkPixbuf 的代码。

我已经放弃了,正在把整个事情搬到开罗。

于 2017-08-28T17:45:43.070 回答
0

文档中,gdk_pixbuf_major_version定义为:

extern const guint  gdk_pixbuf_major_version

描述是:

gdk-pixbuf 库的主要版本号。(例如,在 gdk-pixbuf 版本 1.2.5 中,这是 1。)

此变量在库中,因此代表您已链接的 gdk-pixbuf 库。与 GDK_PIXBUF_MAJOR 宏对比,它代表您包含的 gdk-pixbuf 标头的主要版本。

于 2017-08-22T11:56:30.907 回答