我正在使用GTK为运行Linux的C程序创建一个界面。
我正在使用此功能加载我的XML界面:
gtk_builder_add_from_file(builder, g_build_filename("myInterface.glade", NULL), &error);
只要我在与编译文件相同的目录中,它就可以工作。
但如果我在另一个目录中,请说一个孩子并执行它:../a.out
,我的程序找不到该文件。
所以我的想法是先获取程序路径(" / home /.../ program")并添加文件名以获得绝对路径。
但我不知道如何获得程序路径。而且我不确定这是否是让它成功的最佳选择。
有什么想法吗?谢谢!
答案 0 :(得分:1)
在您使用GTK的情况下,最好使用GResource
并将myInterface.glade
直接编译到您的程序中。
答案 1 :(得分:0)
argv [0]包含运行程序时运行的相对/完整路径。
只扫描到最后一个'/',这将是您当前位置的运行目录
经过一些更多的研究后,我发现了这一点,它适用于所有情况:#include<stdio.h>
#include <unistd.h>
#include <string.h>
#include <libgen.h>
int main()
{
char path[500] = {0};
int dest_len = 500;
if (readlink ("/proc/self/exe", path, dest_len) != -1)
{
dirname (path);
strcat (path, "/");
printf("path=%s\n", path);
}
}