【问题标题】:wxwidgets getting application pathwxwidgets 获取应用程序路径
【发布时间】:2014-11-07 07:30:49
【问题描述】:

我的配置:

  • wxWidgets 版本:3.0.1
  • 代码块版本:13.12 64 位
  • 编译器:gnu gcc 4.8.2
  • 平台/操作系统:Linux 64 位 Ubuntu 14.04.1 LTS

我似乎无法正确使用 UseAppInfo。我不希望路径中的应用程序名称,只是可执行文件的路径。我正在尝试这个:

wxStandardPaths::Get().UseAppInfo(wxStandardPaths::AppInfo_None);
wxString strExe = wxStandardPaths::Get().GetExecutablePath();

strExe 包含完整路径和可执行文件名称,尽管它上面一行的 UseAppInfo 中有选项 AppInfo_None。我知道我从 Get() 获取了一个实例,该实例似乎没有在下一行中延续。文档说要通过 wxStandardPaths::Get() 使用 wxStandardPaths。

我也尝试了以下方法,但也不起作用(令人惊讶的是它没有崩溃,并且确实给了我完整的路径,包括应用程序名称):

wxStandardPaths &path = wxStandardPaths::Get();
path.UseAppInfo(wxStandardPaths::AppInfo_None);
wxString strExe = path.GetExecutablePath();

有什么建议吗?

【问题讨论】:

    标签: wxwidgets


    【解决方案1】:

    wxGetCwd() 不保证提供应用程序的路径。事实上,您可以在应用程序运行时使用wxSetWorkingDirectory 更改该路径。

    我发现获取应用程序路径的最佳方法是使用GetExecutablePath 并使用wxFileName 删除应用程序名称。

    //need to include <wx/filename.h> and <wx/stdpaths.h>
    
    wxFileName f(wxStandardPaths::Get().GetExecutablePath());
    wxString appPath(f.GetPath());
    

    【讨论】:

      【解决方案2】:

      尝试:

      wxString myPath(wxGetCwd());
      

      在 myPath 变量中返回 app 文件夹的路径。

      wxString myPath 是变量类型 wxString wxGetCwd() 返回路径应用文件夹。

      wxString myPath(wxGetCwd());是 myPath 变量中应用文件夹集的路径

      【讨论】:

      • 请解释一下你的答案
      • 在 myPath 变量中返回 app 文件夹的路径。 wxString myPath 是变量类型 wxString wxGetCwd() 返回路径应用程序文件夹。 wxString myPath(wxGetCwd());是 myPath 变量中应用文件夹集的路径!
      • 我已将您的评论复制到答案中。请下次自己做。我也对你的答案投了赞成票。
      • Rohit,我的英文不太好解释,翻译总是出错。所以我尽量不要多说!感谢您的投票! :)
      • 这通常会起作用,但并非总是如此(至少在 Windows 上;我还没有尝试在 Linux 上使用它)
      【解决方案3】:

      GetExecutablePath() 不受UseAppInfo() 的影响,因为它只是为您提供可执行路径,无论它在哪里。其他 wxStandardPaths 方法确实尊重它,您可能想使用类似 GetDataDir() 的东西而不是 GetExecutablePath()

      【讨论】:

      • wxStandardPaths::Get().GetExecutablePath();是我需要的最接近的,我只需要删除 exe 名称,我就得到了 exe 所在的文件夹。非常感谢帮助理解!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多