c - Gtk C 应用程序 - 设置 PWD 以便图片工作

标签 c linux gtk pwd

我有一个用 C 语言编写的简单 Gtk GUI 应用程序。我希望能够在主窗口的框架内呈现外部图像。其代码如下:

GtkWidget myImage;
myImage = gtk_image_new_from_file("assets/image.png");
gtk_fixed_put(FTK_FIXED(frame), myImage, 0, 0));

图像按预期显示,但前提是我 cd 进入它所在的目录。即:

cd /tmp/bin/
./gtktest

如果我从另一个位置运行它,就像这样,永远找不到图像。

/tmp/bin/gtktest

有没有办法让应用程序将当前工作目录 (PWD) 设置为二进制文件本身的位置?

谢谢。

最佳答案

您正在使用 cwd 的相对路径,但您需要使用基于二进制程序位置的相对路径或基于文件系统根目录的绝对路径,如 /usr/lib/yourprogram/assets.

如果你想根据二进制文件的位置构建一个相对路径,这在某些情况下可能更灵活,那么你应该使用 dirname()。像这样:

char *my_location = dirname(argv[0]); // argv[0] contains the path to the binary

查看 man 3 dirname 了解更多信息。

关于c - Gtk C 应用程序 - 设置 PWD 以便图片工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21942793/

相关文章:

c - 使用多个互斥锁

linux - 在 Linux 托管代理上找不到 Dockerfile

python - 为什么两个链接的 gtk 切换按钮会出现运行时错误?

c - C代码的用户界面

c - 需要从#和写出螺旋

linux - Suse Linux ulimit -v 全局设置

C:使用 GTk+ 跟踪鼠标移动

python - 如何在 Gtk 中制作类似 Lollypop 的侧边栏?

c - 如何在 C 中动态分配、填充某些点并打印二维数组?

c++ - 排序插入到小(255 个元素)列表中