我有一个 gtk 程序,我在其中调用了一个 gdk 函数。我正在使用以下方法编译程序:
gcc `pkg-config --cflags --libs gtk+-2.0 cairo glib-2.0` ...
我已经包括
#include <gdk/gdk.h>
它给了我错误:
undefined reference to `gdk_device_ungrab'
有谁知道我做错了什么?
您正在针对 gtk 2.x 进行编译和链接,并且gdk_device_ungrab
仅从 gtk 3.0 开始可用。
请参阅:http: //developer.gnome.org/gdk3/3.4/GdkDevice.html#gdk-device-ungrab
您必须将源文件或目标文件放在命令行中的库之前,即在开头,在 pkg-config 部分之前。
链接器按照命令行中指定的顺序添加对象和库;如果 gdk 库列在您的源文件之前,则链接器不知道您的代码需要该库,直到为时已晚。