Xcode를 사용하여 정적 C++ 라이브러리에 링크하는 Objective-C 데스크탑 응용 프로그램을 작성하려고합니다. 나는 애플의 clang 컴파일러를 사용하고있다. 다음과 같은 링커 오류가 발생합니다 :Objective-C 응용 프로그램을 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++ 표준 라이브러리와 연결되지 않은 것처럼 보입니다. 이것이 문제인가? 만약 그렇다면, 내가 그것을 어떻게 연결시킬 수 있는가?
업데이트 : 나는 빌드에 빈 CPP 파일을 추가하면
다음 모든 컴파일 잘 실행됩니다. 링커에게 C++ 표준 라이브러리와 링크하도록 지시하는 방법이 필요합니다. Xcode에서 모든 빌드 설정을 살펴 보았지만 도움이되는 것을 찾을 수 없습니다.
동일한 문제가 발생하여 하루 종일이 솔루션을 찾고있었습니다. . 그것을 공유해 주셔서 감사합니다, 매력처럼 작동합니다. –
감사합니다 !!! d Objective-C, C++ 및 Objective-C++의 조합 인 정적 라이브러리.라이브러리 자체는 제작시이 플래그를 포함하지 않지만 iOS 응용 프로그램에서 라이브러리를 사용할 때 어떤 이유로 필요합니다. 나는 이유를 모른다. – jocull
@jocull : 정적 라이브러리를 만들면 결과 파일이 링크되지 않으므로 아카이브가 최종 응용 프로그램의 일부로 링크 될 때까지 라이브러리가 필요하지 않습니다. –