Tôi đang cố gắng sử dụng Xcode để xây dựng một ứng dụng máy tính để bàn Objective-C liên kết với một thư viện tĩnh C++. Tôi đang sử dụng trình biên dịch clang của Apple. Tôi nhận được lỗi trình liên kết sau:Liên kết ứng dụng Objective-C tới thư viện tĩnh C++
Apple clang version 3.0 (tags/Apple/clang-211.12) (based on LLVM 3.0svn)
Target: x86_64-apple-darwin11.2.0
Thread model: posix
"/Developer/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.7.0 -syslibroot /Developer/SDKs/MacOSX10.7.sdk -o /Users/andrew/Library/Developer/Xcode/DerivedData/sl-marketplace-analysis-exomzzahbygseghhwoeclcvpooeo/Build/Products/Debug/sl marketplace analyitics.app/Contents/MacOS/sl marketplace analyitics -lcrt1.10.6.o -L/Users/andrew/Library/Developer/Xcode/DerivedData/sl-marketplace-analysis-exomzzahbygseghhwoeclcvpooeo/Build/Products/Debug -L/Users/andrew/Projects/sl-marketplace-analysis/platform/mac/sl marketplace analyitics/../../../../../Library/Developer/Xcode/DerivedData/sl-marketplace-analysis-exomzzahbygseghhwoeclcvpooeo/Build/Products/Debug -filelist /Users/andrew/Library/Developer/Xcode/DerivedData/sl-marketplace-analysis-exomzzahbygseghhwoeclcvpooeo/Build/Intermediates/sl marketplace analyitics.build/Debug/sl marketplace analyitics.build/Objects-normal/x86_64/sl marketplace analyitics.LinkFileList -framework Cocoa -lcore -lSystem /Developer/usr/bin/../lib/clang/3.0/lib/darwin/libclang_rt.osx.a -F/Users/andrew/Library/Developer/Xcode/DerivedData/sl-marketplace-analysis-exomzzahbygseghhwoeclcvpooeo/Build/Products/Debug
Undefined symbols for architecture x86_64:
"std::ios_base::Init::~Init()", referenced from:
___cxx_global_var_init in libcore.a(test.o)
"std::ios_base::Init::Init()", referenced from:
___cxx_global_var_init in libcore.a(test.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Có vẻ như nó không liên kết với thư viện std C++. Đây có phải là vấn đề và nếu có, làm thế nào để tôi đảm bảo rằng nó liên kết với nó?
Cập nhật:
Nếu tôi thêm một tập tin cpp trống để xây dựng sau đó tất cả mọi thứ biên dịch và chạy tốt. Tôi chỉ có vẻ cần một cách để nói cho linker liên kết với thư viện std C++. Tôi đã thử xem xét tất cả các thiết lập xây dựng trong Xcode nhưng dường như không thể tìm thấy bất cứ điều gì giúp.
Tôi gặp phải vấn đề tương tự và đang tìm giải pháp này cho cả ngày Cảm ơn bạn đã chia sẻ nó, hoạt động như một sự quyến rũ –
Cảm ơn bạn !!! Tôi ha d là một thư viện tĩnh là sự kết hợp của Objective-C, C++ và Objective-C++.Bản thân thư viện không bao gồm cờ này khi xây dựng nhưng yêu cầu vì một số lý do khi sử dụng thư viện trong ứng dụng iOS của tôi. Tôi không biết tại sao. – jocull
@jocull: Khi bạn xây dựng một thư viện tĩnh, các tệp kết quả không được liên kết, do đó thư viện không được yêu cầu cho đến khi tệp lưu trữ được liên kết như là một phần của ứng dụng cuối cùng. –