首页 > 解决方案 > _getcwd 不是返回当前工作目录,而是返回程序存储的地方

问题描述

我在某个目录 A 中定义了一个程序,并在另一个目录 B 中定义了它的快捷方式,并且我已将 B 添加到 PATH 中。在不同的目录中,CI 正在运行 cmd.exe 并使用命令执行该程序progname.lnk arg1 arg2。我的理解是这种情况下的“当前工作目录”是C,但是当我使用_getcwd(见下文)获取当前工作目录时,我得到了目录A,即保存程序的地方。

#include <iostream>
#include <direct.h>
#define GCWD _getcwd

int main() {
  char cwd[256];
  GCWD(cwd, 256);
  std::cout << cwd << std::endl;
}

我用命令编译并运行了这个程序mwe.lnk。这个程序存储在 A 中,在 B 中有一个快捷方式,我从 C 运行它,就像我的实际程序一样。

此代码是由computinglife对相关问题的回答得出的,这与此处使用的技术相同。

我对“当前工作目录”的理解是否正确?似乎同意computinglife的回答的第一段,那我做错了什么?

标签: c++windowsworking-directory

解决方案


创建快捷方式时,Windows 将它们配置为将工作目录设置为存储程序的位置。在快捷方式属性中清空此字段可解决问题。


推荐阅读