2014-09-13 37 views
2

我的配置:wxWidgets的獲得應用程序的路徑

  • wxWidgets版本:3.0.1
  • 代碼塊版本:13.12 64位
  • 編譯器:GNU GCC 4.8.2
  • 平臺/操作系統:Linux Ubuntu的64位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(); 

有什麼建議?

回答

2

wxGetCwd()不保證將路徑指定給應用程序。實際上,當應用程序使用wxSetWorkingDirectory運行時,您可以更改該路徑。

我發現獲取應用程序路徑的最佳方法是使用GetExecutablePath並使用wxFileName刪除應用程序名稱。

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

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

GetExecutablePath()不受UseAppInfo()的影響,因爲它只是爲您提供可執行路徑,無論它在哪裏。其他wxStandardPaths方法確實承認它,你可能想使用GetDataDir()而不是GetExecutablePath()

+0

wxStandardPaths :: Get()。GetExecutablePath();是我所需要的最接近的,我只需要刪除exe名稱,我得到了exe文件所在的文件夾。非常感謝幫助理解! – mimosa 2015-02-11 19:26:29

2

嘗試:

wxString myPath(wxGetCwd()); 

返回應用程序文件夾中myPath變量中的路徑。

wxString myPath是變量類型wxString wxGetCwd()返回路徑的應用程序文件夾。

wxString myPath(wxGetCwd());是myPath變量中應用程序文件夾集的路徑

+0

請解釋您的答案 – 2016-01-16 02:01:41

+0

返回myPath變量中應用程序文件夾的路徑。 wxString myPath是變量類型wxString wxGetCwd()返回路徑應用程序文件夾。 wxString myPath(wxGetCwd()); 是myPath變量中應用文件夾集的路徑! – 2016-01-16 07:38:20

+0

我已將您的評論複製到答案。下次請自己做。我也投了你的答案。 – 2016-01-16 07:49:15