【问题标题】:GetModuleFileName not returning PathGetModuleFileName 不返回路径
【发布时间】:2013-12-31 08:52:11
【问题描述】:

我正在尝试使用 VS c++ 获取 win7 下的当前目录,但是

TCHAR pBuf[MAX_PATH];
int bytes = GetModuleFileName(NULL, pBuf, MAX_PATH);
std::cout << bytes << "   " << pBuf << "   " <<   GetLastError() << std::endl;

返回长度 58 和我认为 pBuf 中指向 68 的指针。错误代码为 0。

谢谢!

【问题讨论】:

  • 如果这是 Unicode 版本,请使用 wcout 而不是 cout
  • 如果你想让上面的程序运行,那么将VS中的字符集更改为多字节。

标签: c++ visual-studio getmodulefilename


【解决方案1】:

您的 << operator 不接受 const TCHAR* 作为字符串参数,而您将其打印为通用指针。

解决问题的方法之一是使用A 版本的API(CHAR 缓冲区和GetModuleFileNameA 函数):

CHAR pBuf[MAX_PATH];
int bytes = GetModuleFileNameA(NULL, pBuf, MAX_PATH);
std::cout << bytes << "   " << pBuf << "   " <<   GetLastError() << std::endl;

【讨论】:

  • 谢谢。我最终通过 wcstombs_s 将 pBuf 转换为 char*,因为我只是想打开一个文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 2015-11-04
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多