c++ - Xcode 找不到 C++ 静态库

标签 c++ swift xcode linker

所以我之前遇到过一些问题,但我删除了我的旧问题并将其更新为这个问题。开始了:

我想在我的 iOS Swift 项目中使用 C++ 库。在这个社区的帮助下,我将我的库编译为静态库(.a 文件)。现在我创建了一个新项目来测试它,我只做了以下步骤:

1. 创建新的 Swift 项目

2.Build Phases -> Link Binary with Libraries 添加我的库 ( like so )

3. 添加一个没有头文件的新 C++ 文件,并添加一个桥接头文件,内容如下:

//Wrapper.cpp

extern "C" void test()
{
    //Just to test the swift - c++ connection later this file 
    //shall import the main header of the library.
}

//CAS Test-Bridging-Header.h

void test();

但是现在,当我编译时我得到 this error (您还可以在左侧看到我的项目层次结构)。

提前感谢您的帮助!

最佳答案

要让 Xcode 找到您至少有两个选择的库:

  1. 在build设置下设置库搜索路径。这可能很麻烦,因为您必须确保为正确的体系结构构建库,例如模拟器或实际设备,并使用适当的路径。

  2. 创建一个新的工作区,将库项目和应用程序项目添加到工作区。在 Build Phases for the app target 中,在 Link Binary with Libraries 部分单击 + 号后弹出的对话框中选择静态库 (.a) 文件。 Xcode 将为正确的架构构建库,并将应用程序与正确的静态库链接。

现在,无论您选择上面的选项 1 还是选项 2,为正确的架构构建库都可能很棘手。一些尝试:

  • 在 Xcode 中创建一个外部构建系统项目并使用 makefile 库源附带的。 (文件 -> 新建 -> 项目... -> 跨平台。)
  • 在 Xcode 中创建一个 Cocoa Touch 静态库项目。 (文件 -> 新建 -> 项目... -> iOS。)您将需要添加库 项目的来源。如果 图书馆的构建并不太复杂。

还可以选择将 C++ 库源代码直接包含到您的 Swift 项目中。

看看这篇文章是否有帮助:Compiling external C++ library for use with iOS project .

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

相关文章:

c++ - "EiC"的含义

c++ - 从容器中提取段的函数

c++ - TinyXML2 C++ 导入

swift - 复制 Metal 帧缓冲区纹理以供读取

xcode - 第二个窗口简单显示 : OS X & Swift

ios - 获取请求返回 {(//value )} 而不仅仅是值

xcode - 您经常使用哪些 Xcode 键盘快捷键?

C++ 程序不会按预期输出

ios - CoreData ValueTransformer.transformedValueClass() 在 Swift 3 中从未被调用

ios - 如何在 Swift 中解释从 CMSampleBuffer 派生的像素数组