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++ standard library)

于 2012-12-14T18:51:27.423 回答