应用程序认为它在我的主文件夹 OSX 中

Application thinks it's in my home folder OSX

本文关键字:主文件 文件夹 OSX 我的 应用程序      更新时间:2023-10-16

我在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。[在这些平台上]的所有进程都有一个当前目录的概念,该目录不能保证是程序的目录。您可能需要以另一种方式找到二进制文件,例如以下方式之一:https://stackoverflow.com/a/1024937/2101267