我无法链接我的应用程序: 我收到"对符号'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 Library (/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在哪里?
根据文档,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 标头的主要版本 包括。
这不是一个答案
好吧,我从来没有深入了解过这个问题。 在过去的一周里,我的未定义引用不断来来去去,没有押韵或原因,没有更改库(不添加或删除它们(,也没有更改引用 GdkPixbuf 的代码。
我已经放弃了,正在把整个事情搬到开罗。