2017-08-17 70 views
0

我没办法把我的应用程序链接: 我得到“未定义参考符号‘gdk_pixbuf_major_version’未定义的参考符号“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)这样做: 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在哪里呢?

回答

0

documentationgdk_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标题的主要版本。

+0

谢谢Jose,但我的问题不是编译问题,它是一个链接问题。 – RSullivan

0

这不是一个答案

嗯,我从来没有得到到这条底线。 我的未定义参考在上个星期不断更新,没有韵或理由,没有更改库(不添加或删除它们),也没有更改引用GdkPixbuf的代码。

我已经放弃了,并将整个事情都搬到了开罗。