wxwidgets获取应用程序路径

时间:2014-09-13 04:28:21

标签: wxwidgets

我的配置:

  • wxWidgets版本:3.0.1
  • Codeblocks版本:13.12 64bit
  • 编译器:gnu gcc 4.8.2
  • platform / OS:Linux 64bit 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();

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

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

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

//need to include <wx/filename.h> and <wx/stdpaths.h>

wxFileName f(wxStandardPaths::Get().GetExecutablePath());
wxString appPath(f.GetPath());

答案 1 :(得分:1)

GetExecutablePath()不受UseAppInfo()的影响,因为它只是为您提供可执行路径,无论它在哪里。其他wxStandardPaths方法确实遵守它,您可能希望使用GetDataDir()而不是GetExecutablePath()之类的内容。

答案 2 :(得分:1)

尝试:

wxString myPath(wxGetCwd());

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

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

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