2011-12-21 80 views
-2

我試圖在當前沒有可執行文件名的情況下獲取當前可執行文件的路徑。當前路徑/ SDL庫

我做:

uint32_t size = sizeof(path); 

if (_NSGetExecutablePath(path, &size) == 0) { 


} 

else { 

    printf("buffer too small; need size %u\n", size); 
} 



char* program_name = dirname(path); // To remove executable name from the path 

它的工作路徑輸出:/用戶/ ME /桌面/ TNT /編譯/調試/

但是,當我要加入一些通過使用SDL庫桂,輸出路徑是錯誤的:

/Users/Me/Desktop/TNT/build/Debug/TNT.app/

+0

你在做C或C++嗎? C/C++不是一種語言,它們是不同的語言;) – 2011-12-21 14:54:12

+0

任何在C或C++中工作的東西 – user1104856 2011-12-21 14:54:52

+0

C/C++不是一種語言...來吧,C是C++語言的子集,是不是? ??? ??? – Ulterior 2011-12-21 15:13:07

回答

1

這沒錯,是對的。

http://en.wikipedia.org/wiki/Application_bundle#Mac_OS_X_application_bundles

應用程序軟件包是目錄層次結構,與具有與.app擴展名結尾的名稱的頂層 目錄。

TNT.app/是Mac OSX上的工作目錄(和應用程序包的頂層目錄)。如果您輸入命令外殼並且cd到目錄,您可以確認這一點。

+0

任何特定的規範,但如果路徑與TNT.app/結束那麼就無法找到我的文件... 如何解決? – user1104856 2011-12-21 15:12:40

+0

我想你想把你的文件放在TNT.app目錄中,一般在Mac上,這就是應用程序如何與該目錄下的所有內容捆綁在一起。如果你不能做到這一點,你可以追加「.. \」去向後一個目錄。 – gravitron 2011-12-21 15:18:20

+0

謝謝先生,但是如何添加「.. \」以返回一個目錄:printf(「可執行文件路徑爲:\」%s \「\ n」,program_name); – user1104856 2011-12-21 15:21:25