2014-11-13 7 views
0

* .sym 형식의 차트에 모음을 매핑하는 Qt 프로젝트에서 작업 중입니다..app 파일로 열기

목표는 this과 같은 초기 IPA 차트를로드하는 것입니다.

나는 *.sym 개의 파일을 가지고 있으며, 응용 프로그램을 시작한 후에 파일을로드 할 수 있지만 실제로 실행 파일이 어디에서 실행되고 있는지 잘 모르겠습니다.

나는이 매우 어렵게하면 fopen 호출을 사용하여 만드는이

Project 
|_ Source 
|_ Build 
    |_ Source 
    |_ Charts 
     |_ load_at_start.sym 
    |_ Project.app 
     |_ Contents 
     |_ MacOS 
      |_ Project (executable) 

같은 (건물 후) 디렉토리 형식을 가지고있다. 내가하면 fopen이 실행 파일이 휴식 장소로 현재 작업 디렉토리를 고려할 것이라고 가정, 그래서 ...

FILE *stream = fopen("./../../../charts/load_at_start.sym", "r"); 

을 이런 식으로 뭔가를 시도했지만 작동하지 않습니다. 누구든지 나를 도울 수 있습니까?

+3

경로는 상대 경로이므로 작업 디렉토리를 기준으로합니다. 아마도 작업 디렉토리는 사용자가 생각하는 것이 아닙니다. 그게 뭔지 확인 했니? –

+1

exe가 시작될 때 현재 디렉토리를 인쇄 해보십시오. http://stackoverflow.com/questions/4807629/how-do-i-find-the-current-directory – user2240431

답변

0

.sym 파일이 응용 프로그램 번들 (.app 디렉토리) 내에서 특히 Contents/Resources 아래에 있는지 확인하고자 할 것입니다.

그런 다음 QCoreApplication::applicationDirPath을 사용하여 응용 프로그램의 디렉토리 (예 : "/Applications/Project.app/Contents/MacOS/")를 얻고 파일에 상대 경로를 추가 할 수 있습니다 (예 : "../Resources/charts/ load_at_start.sym "). 이 같은

뭔가 :

QDir dir(QCoreApplication::applicationDirPath()); 
dir.cd("../Resources/charts"); 
FILE* stream = fopen(dir.filePath("load_at_start.sym").toUtf8().constData()); 

당신은 Qt의 I/O 기능 대신 C의 사용을 고려할 수도 있지만.

+0

이것은 기본적으로 저에게 효과적이었습니다. 나는 다른 플랫폼에서도 테스트하지 않았다. 리눅스 테스트가 수행 된 후에 나는 나중에 논평 할 것이다. 고마워요! – erip