2014-09-13 3 views
2

내 설정 방법 :wxWidgets에 응용 프로그램 경로

  • wxWidgets에 버전 : 3.0.1
  • Codeblocks 버전 : 13.12 64 비트
  • 컴파일러 : GNU GCC 4.8.2
  • 플랫폼/OS : 리눅스 64 비트 우분투 14.04.1 LTS

UseAppInfo를 올바르게 사용할 수 없습니다. 경로의 앱 이름, 실행 파일의 경로 만 원하지 않습니다. 나는 이것을 시도하고있다 :

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

strExe는 위의 라인 UseAppInfo에서 옵션 AppInfo_None에도 불구하고 전체 경로와 실행 파일 이름이 포함되어 있습니다. 나는 다음 라인에서 이월 될 것 같지 않은 Get() 인스턴스를 얻고 있다는 것을 알고있다. doc은 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()과 같은 것을 사용하려고합니다.

+0

wxStandardPaths :: Get(). GetExecutablePath(); 내가 필요로하는 것 중 가장 가까운 것이고, 나는 exe 이름을 제거해야하고 exe가있는 폴더가있다. 이해하는데 많은 도움을 주셔서 감사합니다! – mimosa

2

시도 :

wxString myPath(wxGetCwd()); 

이 MYPATH 변수에 app 폴더의 경로를 반환합니다.

wxString myPath는 변수 유형 wxString wxGetCwd() 경로 응용 프로그램 폴더를 반환합니다.

wxString myPath (wxGetCwd()); myPath 변수의 응용 프로그램 폴더 세트에 대한 경로입니다.

+0

대답을 설명하십시오. –

+0

myPath 변수에서 app 폴더의 경로를 반환합니다. wxString myPath는 변수 유형 wxString입니다. wxGetCwd()는 경로 app 폴더를 반환합니다. wxString myPath (wxGetCwd()); 은 myPath 변수의 앱 폴더 세트 경로입니다. –

+0

답변에 댓글을 복사했습니다. 다음에 직접 해주세요. 나는 또한 당신의 대답에 투표했습니다. –