我想在OS X 10.8上使用XCode 4.5.1編譯示例代碼「SonofGrab」。內聯函數的鏈接錯誤
一個功能是Controller.m或者像這樣定義
inline uint32_t ChangeBits(uint32_t currentBits, uint32_t flagsToChange, BOOL setFlags);
這將導致該錯誤消息:
Undefined symbols for architecture x86_64:
"_ChangeBits", referenced from:
-[Controller awakeFromNib] in Controller.o
[...]
ld: symbol(s) not found for architecture x86_64
刪除功能ChangeBits的內聯解決了這個問題,但爲什麼用鏈接器找不到原始定義的Changebits?
我不記得在OS X 10.7上有相同的代碼示例有這個問題。鏗鏘聲有沒有改變這個代碼? – alecail
可能因爲您以前使用過GCC或LLVM-GCC。 LLVM-GCC意味着與GCC兼容,即產生相同的結果。現在您完全使用了Clang,您將看到錯誤,正如我鏈接到的LLVM文檔中所描述的那樣。 – mattjgalloway
我遇到了這個問題,mattjgalloway的答案解決了這個問題。爲了更清楚起見,在Controller.m第71行中,在「inline」前面添加「static」。 –