Tôi đang cố gắng biên dịch mã mẫu "SonofGrab" bằng XCode 4.5.1 trên OS X 10.8.Lỗi liên kết cho các hàm nội tuyến
Một hàm được định nghĩa như thế này trong controller.m
inline uint32_t ChangeBits(uint32_t currentBits, uint32_t flagsToChange, BOOL setFlags);
Điều này dẫn đến thông báo lỗi này:
Undefined symbols for architecture x86_64:
"_ChangeBits", referenced from:
-[Controller awakeFromNib] in Controller.o
[...]
ld: symbol(s) not found for architecture x86_64
Loại bỏ các nội tuyến của ChangeBits chức năng giải quyết vấn đề, nhưng tại sao các linker không tìm thấy Changebits với định nghĩa gốc?
Tôi không nhớ có sự cố này trên OS X 10.7 với cùng mẫu mã. Đã có một số thay đổi trên clang đã phá vỡ mã này? – alecail
Có lẽ vì bạn đã sử dụng GCC hoặc LLVM-GCC trước đây. LLVM-GCC có nghĩa là tương thích với GCC, tức là sản xuất cùng một kết quả. Bây giờ bạn đang sử dụng Clang đầy đủ, bạn đang nhìn thấy lỗi theo điều chính xác được mô tả trong các tài liệu LLVM tôi liên kết đến. – mattjgalloway
Tôi gặp phải vấn đề này và câu trả lời của mattjgalloway đã giải quyết được vấn đề này. Chỉ cần rõ ràng hơn, trong Controller.m, dòng 71, thêm "static" ở phía trước "inline". –