在Ubuntu上是否有可能替代非苹果专用的_NSGetExecutablePath?
我试图在Ubuntu上编译以下代码:OSX.cxx
根据我之前提出的问题:fatal error: mach-o/dyld.h: No such file or directory,我决定将第52行注释掉,我想知道是否有一种通用的跨平台(非苹果专用)方法,可以以非苹果特有的方式重写第567行( _NSGetExecutablePath块)的代码块。
阿伦·斯托亚诺夫( also )对Programmatically retrieving the absolute path of an OS X command-line app和How do you determine the full path of the currently running executable in go?的回答给了我一些关于从哪里开始的想法,但我想在开始之前确定我在正确的轨道上。
有没有一种方法可以修改_NSGetExecutablePath,使其与Ubuntu兼容?
目前,我遇到了以下编译器错误:
HeatmapGenerator_Macintosh_OSX.cxx:568:13: error: use of undeclared identifier
'_NSGetExecutablePath'
if (_NSGetExecutablePath(path, &size) == 0)发布于 2015-07-09 16:26:46
如何以一种跨POSIX系统可移植的方式这样做的基本想法:
#define _XOPEN_SOURCE 500
#include <stdio.h>
#include <limits.h>
#include <stdlib.h>
static char *path;
const char *appPath(void)
{
return path;
}
static void cleanup()
{
free(path);
}
int main(int argc, char **argv)
{
path = realpath(argv[0], 0);
if (!path)
{
perror("realpath");
return 1;
}
atexit(&cleanup);
printf("App path: %s\n", appPath());
return 0;
}您可以为它定义一个自己的模块,只需将它传递给argv[0]并从一个标头导出appPath()函数。
编辑:用访问器方法替换导出变量
https://stackoverflow.com/questions/31322873
复制相似问题