2013-03-07 73 views
1

我的問題與this earlier one完全相反。我正在開發一個開源應用程序,該應用程序以2種形式發佈,預編譯的二進制文件和源代碼。如何從碼頭中的程序快捷方式檢索命令行參數?

我安裝了預編譯的二進制文件,它的工作原理非常完美,在dock中有一個漂亮的小圖標。

我編譯成功的源代碼,但我啓動它時遇到運行時錯誤。經過調查,我懷疑這個程序需要命令行選項才能正常運行。

所以我的問題是:如果我的假設是正確的,工作版本實際上是定義命令行參數,如何從打包應用檢索CL參數?

如果這有什麼差別,我談論的應用程序是Cyberduck,和我運行OS X 10.8.2版本

+0

我假設你來自Windows - Dock圖標OSK不是快捷方式,沒有額外的命令行參數,它們就像運行在finder中的應用程序一樣運行,或者從命令行使用'open'運行 – Mark 2013-03-07 10:58:58

+0

你得到什麼運行時錯誤? – molbdnilo 2013-03-07 19:47:20

+0

「[Launcher Error]字典中沒有運行鍵」。如果你在代碼中查找這個錯誤,你可以清楚地看到它來自'main'函數的錯誤參數。 – rahmu 2013-03-08 09:04:15

回答

1

的問題不是命令行。從代碼here

// Get an instance of the non-localized keys. 
CFDictionaryRef bundleInfoDict = CFBundleGetInfoDictionary(mainBundleRef); 
if(NULL == bundleInfoDict) { 
    fprintf(stderr, "[Launcher Error] No info dictionary.\n"); 
    exit(-1); 
} 

其中mainBundleRef引用.app包。

問題是應用程序內的Info.plist(/Applications/Cyber​​duck.app/Contents/Info.plist)中沒有正常的鍵。它以某種方式被破壞。代碼存儲庫中的一個看起來一目瞭然。有關結構的信息,我會看看蘋果開發document

最簡單的修復方法是重新下載並安裝應用程序。

+0

感謝您花時間查看代碼,儘管這不是我的問題的意圖。我正在尋找的答案實際上是查看Info.plist文件。我找到了我需要的東西;這與所問的問題無關,所以如果有人在此頁面發生絆倒,我只需[在此標記](http://trac.cyberduck.ch/ticket/6768)。 – rahmu 2013-03-08 16:43:56

相關問題