与我自己的静态库链接的问题
Posted
技术标签:
【中文标题】与我自己的静态库链接的问题【英文标题】:Issues Linking with my own static library 【发布时间】:2014-05-14 17:34:08 【问题描述】:我正在从事一个涉及构建三个不同可执行文件的项目。与其创建三个单独的 Xcode 项目,我想我会将所有源代码保存在一个项目中,并为二进制文件使用不同的目标。它们都碰巧需要相同的源文件集(一个用 C 编写的加密库),我为它们添加了一个静态库目标,它似乎能够很好地编译它们。
我的问题是我正在处理其中一个可执行文件并尝试与该库链接时,我不断收到“ld: symbol(s) not found for architecture x86_64”错误。我已经编译了库并将其添加到相关目标的构建阶段设置中的“Target Dependencies”、“Link Binary with Libraries”和“Copy Headers”(或相关的头文件)中。 Xcode 让我包含库(只是“encryption.h”),但构建再次失败。有什么建议么?我对使用 Xcode 进行 C++ 开发还比较陌生,所以我可能会遗漏一些明显的东西。
【问题讨论】:
【参考方案1】:这里可能会发生一些问题。
首先,确保在您的库构建设置中设置了“x86_64
”。
您的构建设置应如下所示:
其次,如果你想在 Objective-C 应用程序中包含你的 C++ 库,你需要add some extra "magic" to your library's .h
header files。
#ifdef __cplusplus
extern "C"
#endif
这样做将允许您的 Objective-C 代码在您的库中找到非 C++ 损坏的符号。
【讨论】:
我的 Xcode 版本 (5.1.1) 实际上没有那个特定设置,我能得到的最接近的是设置为我当前操作系统 (10.9.2) 的目标 SDK。这是我想检查的东西,所以很高兴你提到了它,但我认为还有其他事情发生以上是关于与我自己的静态库链接的问题的主要内容,如果未能解决你的问题,请参考以下文章