力为的技术博客

联系 聚合 管理
  154 Posts :: 1 Stories :: 561 Comments :: 0 Trackbacks
获取程序所在的目录是一个常用的需求,在Windows下使用GetModuleFileName可以满足需求。
在使用Qt,wxWidgets等实现可跨平台代码该如何处理?
---找与GetModuleFileName等价的API。这是我马上能相到的。很遗憾,却没有找到。

有时候,你需要的东西就在你的面前,你却找不到它。

这样的程序你一定写过,并且还用不同种语言实现过:
int main(int argc, char *argv[])
{
   std::cout << "Hello World!" << std::endl;

   return 0;
}

我们需要的目录信息也存在于当中:
      QString applicationPath = argv[0];
      int nPos = applicationPath .lastIndexOf('\\');
      applicationPath  = applicationPath .left(nPos+1);

所以,我们根本不需要额外的API来获取程序的目录。

说起GetModuleFileName,就会想起Set/GetCurrentDirectory。

有时候,我们并没有忘记,只是还没有想起来。
posted on 2013-04-16 13:46 力为 阅读(2427) 评论(3)  编辑 收藏 引用 所属分类: 4. C++ FAQ

评论

# re: 被遗忘的argv[0][未登录] 2013-04-16 14:32 ~
Qt QCoreApplication::applicationFilePath()  回复  更多评论
  

# re: 被遗忘的argv[0] 2013-04-16 18:45 viruscamp
argv[0] 根本不是这样用的。

有可能是程序全名,c:\windows\test.exe, 在命令行设好了 %path% 的情况下,更可能是 test.exe 或者仅仅 test  回复  更多评论
  

# re: 被遗忘的argv[0] 2013-10-06 16:14 yjf_victor
用argv[0]读出来的很可能只是相对路径。  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理