Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 应用程序认为是';在我的主文件夹OSX中_C++_C_Macos - Fatal编程技术网

C++ 应用程序认为是';在我的主文件夹OSX中

C++ 应用程序认为是';在我的主文件夹OSX中,c++,c,macos,C++,C,Macos,我在Windows和OSX下使用eclipse和c++11进行编译。当我创建一个发布并将其拖到另一个文件夹时,Windows二进制文件具有当前工作目录。OSX版本认为它在我的主文件夹中。无论我把它放在哪里,它都认为它正在我的主目录中运行 我在代码中添加了一条打印语句来证明: 当前工作目录:/Users/Dom 只有双击二进制文件时,才会出现此问题。如果我打开一个终端并使用./运行程序,它将在正确的目录中打开 我不确定如何解决这个问题,但需要解决这个问题,以便应用程序找到相对路径特定的资源 谢谢

我在Windows和OSX下使用eclipse和c++11进行编译。当我创建一个发布并将其拖到另一个文件夹时,Windows二进制文件具有当前工作目录。OSX版本认为它在我的主文件夹中。无论我把它放在哪里,它都认为它正在我的主目录中运行

我在代码中添加了一条打印语句来证明: 当前工作目录:/Users/Dom

只有双击二进制文件时,才会出现此问题。如果我打开一个终端并使用./运行程序,它将在正确的目录中打开

我不确定如何解决这个问题,但需要解决这个问题,以便应用程序找到相对路径特定的资源

谢谢

解决方案:

char path[1024];
uint32_t size = sizeof(path);
if (_NSGetExecutablePath(path, &size) == 0){ /*...*/ }

如果您是UAC提升版,它也不会在Windows下工作,因为当前目录在提升期间重置为
%WINDIR%\system32
。[在这些平台上]的所有进程都有一个当前目录的概念,该目录不能保证是程序的目录。您可能需要以其他方式查找二进制文件,例如以下方式之一: