c++ - Xcode 静态库 - 路径异常

标签 c++ xcode boost linker static-libraries

我有一个使用 ProtocolBuffers (libprotobuf) 和 Boost 的 ASIO 库编写的简单程序。我确定我需要链接 libprotobuf.a 和 libboost_system.a,它们都位于我系统的/usr/local/lib 中。

按照在多个地方找到的说明,我已将这两个 .a 文件添加到“构建阶段”下的“链接二进制文件与库”列表中。两者都设置为“必需”。

当我构建时,这会生成一个链接器错误:

ld: library not found for -lprotobuf

如果我将以下内容(作为两个单独的行)添加到“Build Settings”/“Other Linker Flags”,那么问题就会消失:“-L”、“/usr/local/lib”。

我的问题是这个设置库搜索路径的 -L hack 是否真的是正确的方法。考虑到我已将它们添加到“Build Phases”/“Link Binary With Libraries”列表中,我不确定为什么 Xcode 没有选择这些库的位置。我本以为他们在此列表中的存在足以让 Xcode 找到如何找到他们的信息。这两个 .a 文件现在也显示在我的项目文件“树”中。

那么有没有比滥用“其他链接器标志”设置更好的方法呢?

我正在使用 Xcode 4.6.3。

最佳答案

感谢 yngum,到目前为止确定的最佳答案似乎是使用“库搜索路径”字段。考虑到这一点,“链接二进制文件与库”列表似乎不是完整路径列表,而是链接器稍后定位的库名称的基本列表。实际上,“Link Binary With Libraries”列表类似于 -l 选项,而“Library Search Paths”到 -L 选项通常传递给 ld.

关于c++ - Xcode 静态库 - 路径异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19603419/

相关文章:

objective-c - 最近的文件

c++ - 用 std::set 替换 std::map 并按索引搜索

c++ - 来自 Boost : cannot find the libraries to link with 的链接器错误

c++ - "spamming"boost::property_tree::read_json 时发生访问冲突

c++ - 如何使用 Opengl 加载和显示纹理

c++ - 从 CMake 中的自定义目标运行目标

c++ - 在 C 代码中使用 boost::bind() 会起作用吗?

c++ - 为什么 mingw 4.4 说 <random> 需要 c++0x?

iphone - 如何将iPad应用程序作为内部应用程序分发?

html - Perfect app 中 webroot 的位置(用于 css 文件)