20

自分でコンパイルしたライブラリを iOS アプリで使用しようとしています。ライブラリは Tesseract OCR ライブラリです。それ(およびその依存関係)のコンパイルはうまくいったようです。

ただし、アプリ プロジェクトでこの lib にリンクしようとすると、アプリはリンクに失敗します。リンク エラーには驚かされます。かなり標準的なC++のものを見つけるTesseractのものに問題があるようです。

私が間違っているかもしれないことについての提案は最も役に立ちます。

これは、私が見ている種類のリンク エラーのスニペットです。

Undefined symbols for architecture armv7:
"std::string::find_last_of(char const*, unsigned long) const", referenced from:
  tesseract::WordSizeModel::Init(std::string const&, std::string const&) in    libtesseract.a(word_size_model.o)
"std::string::find_first_of(std::string const&, unsigned long) const", referenced from:
  tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libtesseract.a(cube_utils.o)
"std::string::find_first_not_of(std::string const&, unsigned long) const", referenced from:
  tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libtesseract.a(cube_utils.o)
"std::string::data() const", referenced from:
  tesseract::CubeUtils::SplitStringUsing(std::string const&, std::string const&, std::vector<std::string, std::allocator<std::string> >*) in libtesseract.a(cube_utils.o)
"std::string::find(char, unsigned long) const", referenced from:
  tesseract::TessLangModel::IsLeadingPunc(int) in libtesseract.a(tess_lang_model.o)
4

5 に答える 5

28

皆様、ご回答ありがとうございます。私は自分の問題が何であるかを見つけたので、他の誰かがそれを打った場合に備えてここで共有します.

私の問題は、プロジェクトのビルド設定でした。「Apple LLVM Compiler 5.0 - Language - C++」の下に「C++ 標準ライブラリ」の設定があります。その値を「Compiler Default」に変更する必要がありました。

数時間無駄になりましたが、問題は解決しました!

于 2012-10-12T03:58:29.933 に答える
8

iOS SDK の新しいバージョンを使用しており、[ビルド設定] > [Apple LLVM 5.0 - 言語 - C++] > [C++ 標準ライブラリ] を [コンパイラのデフォルト] に設定しましたが、46 のコンパイル エラーが発生しました。

「libstdc++(GNU C++標準ライブラリ)」に設定することでエラーを取り除きました。

うまくいけば、これは「コンパイラのデフォルト」を使用しているときに行き詰まった人の助けになります。

于 2013-12-09T20:37:26.053 に答える
0

armv7 アーキテクチャ用の SDK がない場合は、コードをコンパイルできますが、コンピュータにインストールされている標準の C++ は別のアーキテクチャ (x86 など) 用であり、リンカーはこのアーキテクチャに必要なライブラリを見つけることができません。

于 2012-10-11T22:53:37.153 に答える
-1

リンク エラーは、C++ ライブラリがパスに見つからないことを示しています。詳細な情報がなければ、C++ ライブラリへのパスが正しいことを確認することをお勧めします。

于 2012-10-11T22:43:30.097 に答える