【发布时间】:2012-03-22 08:06:43
【问题描述】:
我遇到了一个我无法真正理解的问题。
我想将一系列图标直接“包含”到我的 C 代码中。使用工具 gdk-pixbuf-csource(带有 --struct 选项)我生成了一个文件,该文件为每个图像初始化一个 'const' pixdata 结构。
编码图像的示例如下:
const GdkPixdata pixdata_flipH = {
0x47646b50, /* Pixbuf magic: 'GdkP' */
24 + 479, /* header length + pixel_data length */
0x2010002, /* pixdata_type */
64, /* rowstride */
16, /* width */
16, /* height */
/* pixel_data: */
"\257\0\0\0\0\1\0\0\0\1\203\0\0\0\0\2\0\0\0\2\40J\207E\202\40J\207\377"
"\202\0\0\0\0\202\40J\207\377\2\40J\207E\40J\207\2\202\0\0\0\0\1\0\0\0"
"\2\203\0\0\0\0\4\40J\2072\40J\207\377\276\322\352\377\40J\207\377\202"
<data continues......>
"\0\0\0\0\1\40J\207\1\204\0\0\0\0\1\40J\207\3\227\0\0\0\0\1\0\0\0\3\244"
};
我想在一些按钮中包含图标,所以我准备了以下一系列语句:
GtkWidget *icon_flipH = gtk_image_new_from_pixbuf(gdk_pixbuf_from_pixdata(&pixdata_flipH, FALSE, NULL));
GtkWidget *icon_flipV = gtk_image_new_from_pixbuf(gdk_pixbuf_from_pixdata(&pixdata_flipV, FALSE, NULL));
// and so on...
这样我将图片添加到按钮的功能:
gtk_button_set_image(GTK_BUTTON(button_flipH), icon_flipH);
嗯... GCC 编译器出错,在包含 gdk_pixbuf_from_pixdata() 函数的每一行显示“初始化元素不是常量”。我不知道为什么,因为该函数需要一个 const 结构指针,而实际上我的结构被声明为“const”。
我是不是忘记了什么?将图像包含到代码中并创建 pixbufs 不是正确的方法吗?这种情况下有教程吗?
【问题讨论】:
-
您是否尝试使用函数调用的结果来初始化全局变量?那是行不通的。
-
谢谢卡尔,我犯了那个错误。 @Kerrek SB:我实际上不需要转换任何专业,因为我是一个简单地发布问题的学生。