我一直在使用agvtool
作爲我的iPhone應用程序的一般原則,並且最近發現了一個原因,我希望能夠檢查版本變量(以便我可以將幫助內容重新複製到Documents目錄中,如果它已過時)。在構建期間自動生成在MyApp_vers.c中定義的變量MyAppVersionNumber
。它在.o文件中生成,並顯示在鏈接應用程序本身的(以前的版本?)中。看起來好極了。
所以,現在我已經聲明在.m
文件,我需要用這個(後來又嘗試使用它,只是在NSLog
聲明上手)的extern double MyAppVersionNumber
,我嘗試建立的iPhone模擬器,並得到一個鏈接錯誤:
"_MyAppVersionNumber", referenced from:
_MyAppVersionNumber$non_lazy_ptr in HelpViewController.o
(maybe you meant: _MyAppVersionNumber$non_lazy_ptr)
ld: symbol(s) not found
collect2: ld returned 1 exit status
那麼,我需要做什麼不同,以獲得此鏈接?
我對$ non_lazy_ptr和agvtool進行了搜索,沒有任何結果,只有$ non_lazy_ptr,它提供了一些東西,但主要是應用於庫,這不是真的(是嗎?)。到目前爲止,在我的挖掘中,我還沒有找到關於agvtool的一個頁面,它實際上就使用變量進行了詳細討論 - 我讀過的那些只是隨便說聲明一個外部變量,我已經完成了。
任何人都知道這一點,和/或以其他方式能夠提供任何幫助?
謝謝!
嗯......一直做更多的谷歌搜索,並嘗試不同的東西,我發現這一點: 如果我把extern語句和參考都放到'main.m'中,它可以正常工作。然而,在我的視圖控制器類中使用它,卻無法工作......是否有一個extern變量可以通過一個類訪問(如@interface和@ @ @ @ @所定義的)? 我試着把它放在'@interface'裏面,它在'extern''之前出錯了:expected specifier-qualifier-list,在我的'.h'和'.m'的其他地方$ non_lazy_ptr鏈接錯誤)。 如何通過我的課程獲得訪問權限? – lindes 2010-07-31 03:55:03
注意:我找到了解決原始問題的方法(涉及確保我的幫助查看器查看最新內容):不要將其複製到文檔(它是隻讀的,因此不是必需的)。 儘管如此,我還是很高興知道發生了什麼,以防因爲其他原因想要這個變量。 – lindes 2010-07-31 06:00:40
對不起,我不明白你的問題,刪除了答案。 – 2011-02-15 05:05:36