4

静的ライブラリを使用してアプリ リンクを作成しましたが、次のエラーが見つかりました

Undefined symbols for architecture armv7:
"std::_List_node_base::hook(std::_List_node_base*)", referenced from:
      std::list<TSendBuf, std::allocator<TSendBuf> >::_M_insert(std::_List_iterator<TSendBuf>, TSendBuf const&) in libCardAnalyLib1.a(SendRecvThread.o)
"std::_List_node_base::unhook()", referenced from:
      std::list<TSendBuf, std::allocator<TSendBuf> >::_M_erase(std::_List_iterator<TSendBuf>) in libCardAnalyLib1.a(SendRecvThread.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

誰がこのエラーが何であるか教えてもらえますか? ありがとうございました。
また、アプリとライブラリには C++ コードがあります。私のデモアプリはライブラリをリンクできず、このエラーが表示され、TSendBuf は

typedef struct {
    unsigned char szBuf[1200];//1000 fah  char
} TSendBuf;
4

2 に答える 2

3

おそらくlibstdc++.dylib、アプリケーションがリンクするフレームワーク/バイナリのリストに追加する必要があります。

ターゲット設定/「ビルドフェーズ」タブ/「ライブラリとバイナリをリンクする」セクションからそれを行うことができます

于 2012-12-14T18:12:26.077 に答える
2

ライブラリとアプリがリンク設定で一致していない可能性があります。

ライブラリとアプリの両方の Xcodeビルド設定内のApple LLVM コンパイラの下で、 C++ 標準ライブラリ設定を特に確認してください。それらは一致する必要があります。

問題のライブラリが自分で構築したものではないと仮定し、そのライブラリが少し前に構築された場合 (Xcode 4.5/LLVM 4.1 より前)、アプリの「正しい」設定はlibstdc++ (GNU C++ 標準ライブラリ)になります。

于 2012-12-14T18:51:27.423 に答える