2

私のプロジェクトは100%IOS 6.1で動作していますが、変更すると次の問題が発生しました

clang: warning: argument unused during compilation: '-stdlib'
Undefined symbols for architecture armv7:
  "std::cerr", referenced from:
      ImageCodec::unregisterCodec(ImageCodec*) in ocrkit-bin.o
      colorspace_convert(Image&, int, int, unsigned char) in ocrkit-bin.o
      colorspace_by_name(Image&, std::string const&, unsigned char) in ocrkit-bin.o
      flipX(Image&) in ocrkit-bin.o
      rot90(Image&, int) in ocrkit-bin.o
      exif_rotate(Image&, unsigned int) in ocrkit-bin.o
      BMPCodec::writeImage(std::ostream*, Image&, int, std::string const&) in ocrkit-bin.o
      ...
  "std::string::operator+=(std::string const&)", referenced from:
      Args::str() in ocrkit-bin.o
  "std::__throw_length_error(char const*)", referenced from:
      std::vector<PDFObject*, std::allocator<PDFObject*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<PDFObject**, std::vector<PDFObject*, std::allocator<PDFObject*> > >, PDFObject* const&) in ocrkit-bin.o
      std::vector<unsigned char, std::allocator<unsigned char> >::_M_fill_insert(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned long, unsigned char const&) in ocrkit-bin.o
      std::vector<unsigned char, std::allocator<unsigned char> >::_M_insert_aux(__gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char> > >, unsigned char const&) in ocrkit-bin.o
      l4495 in ocrkit-bin.o
      l4497 in ocrkit-bin.o
      l4499 in ocrkit-bin.o
      l4501 in ocrkit-bin.o
      ...
  "std::string::clear()", referenced from:
      PDFContentStream::writeStreamImpl(std::ostream&) in ocrkit-bin.o
  "std::basic_ios<char, std::char_traits<char> >::clear(std::_Ios_Iostate)", referenced from:
      PDFXObject::writeStreamImpl(std::ostream&) in ocrkit-bin.o
      PDFContentStream::writeStreamImpl(std::ostream&) in ocrkit-bin.o
  "std::ostream::operator<<(double)", referenced from:
      quantize::quantize(double, int) in ocrkit-bin.o
  "std::ostream::operator<<(unsigned long long)", referenced from:
      PDFNumber::writeImpl(std::ostream&) in ocrkit-bin.o
      PDFTrailer::write(std::ostream&) in ocrkit-bin.o
  "std::_List_node_base::hook(std::_List_node_base*)", referenced from:
      std::list<ImageCodec::loader_ref, std::allocator<ImageCodec::loader_ref> >::_M_insert(std::_List_iterator<ImageCodec::loader_ref>, ImageCodec::loader_ref const&) in ocrkit-bin.o
      std::list<PDFObject*, std::allocator<PDFObject*> >::_M_insert(std::_List_iterator<PDFObject*>, PDFObject* const&) in ocrkit-bin.o
      std::list<PDFXObject*, std::allocator<PDFXObject*> >::_M_insert(std::_List_iterator<PDFXObject*>, PDFXObject* const&) in ocrkit-bin.o
      std::list<PDFPage*, std::allocator<PDFPage*> >::_M_insert(std::_List_iterator<PDFPage*>, PDFPage* const&) in ocrkit-bin.o
  "std::basic_ofstream<char, std::char_traits<char> >::open(char const*, std::_Ios_Openmode)", referenced from:
      PrintLines(void*, char const*) in ocrkit-bin.o
  "std::string::operator[](unsigned long)", referenced from:
      PNG2Codec::readImage(std::istream*, Image&, std::string const&) in ocrkit-bin.o
      quantize::quantize(double, int) in ocrkit-bin.o
  "std::basic_ios<char, std::char_traits<char> >::fill(char)", referenced from:
      PDFXref::write(std::ostream&) in ocrkit-bin.o
  "std::string::operator=(std::string const&)", referenced from:
      quantize::quantize(double, int) in ocrkit-bin.o
      PDFXObject::writeStreamTagsImpl(std::ostream&) in ocrkit-bin.o
      Args::str() in ocrkit-bin.o
  "std::ostream::tellp()", referenced from:
      PDFXref::write(std::ostream&) in ocrkit-bin.o
      PDFStream::writeImpl(std::ostream&) in ocrkit-bin.o
      PDFObject::write(std::ostream&) in ocrkit-bin.o
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)", referenced from:
      PDFXref::write(std::ostream&) in ocrkit-bin.o
      PNG2Codec::readImage(std::istream*, Image&, std::string const&) in ocrkit-bin.o
  "std::_Rb_tree_increment(std::_Rb_tree_node_base const*)", referenced from:
      PDFPage::writeImpl(std::ostream&) in ocrkit-bin.o
      Args::str() in ocrkit-bin.o
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<<<std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, unsigned char)", referenced from:
      l022 in ocrkit-bin.o
  "std::string::append(char const*)", referenced from:
      _ocrForImage in ocrkit-bin.o

これらの -ObjC -lxml2 -all_load -lstdc++ すべてのリンカー フラグを使用しており、IOS 6.1 で 100% 動作しています。IOS 7.0 コンパイラの問題は何ですか

4

2 に答える 2

4

プロジェクトが gcc でコンパイルされた他のフレームワークまたは組み込みプロジェクトを使用している可能性があり、プロジェクトを 7.0 に切り替えると、llvm を使用してビルドが開始されました。

ターゲットのビルド設定の Apple LLVM 5.0 - C++ セクションで、プロジェクトが gcc の標準ライブラリを使用するように強制できます。

LLVM C++ オプション

于 2013-11-07T11:27:25.200 に答える
1

llvmエラーは、C++ 標準ライブラリがリンクされていないことを示しています。パスする必要があると思います

-stdlib=libc++

むしろその後

-lstdc++

(gcc で使用されるのはどれですか?) 完全にはわかりませんが、私自身は C++ と Objective C を混在させたことはありません。

おそらくiOS7より前にGCC iso LLVMを使用していたので、プロジェクトを更新することでコンパイラ(意図しない可能性があります)が変更されました。

于 2013-09-23T08:39:13.217 に答える