【问题标题】:Load static library in swift code在 swift 代码中加载静态库
【发布时间】:2017-06-14 06:10:36
【问题描述】:

我有一个用 c++ 编写并用 xcode 编译的静态库(.a 文件)。 在我的 C++ 代码中:

extern "C" void startA(const char * szCmdLne){
 //bla bla
}

extern "C" void stopA(){
  //bla bla
} 

现在我正在用 swift 2(在 xcode 中)编写一个 iOS SDK。我想将库加载到 SDK 中并调用这 2 个函数(startA 和 stopA)。

正确的做法是什么?我尝试了桥接,但它不起作用。

谢谢!

【问题讨论】:

    标签: c++ ios swift xcode


    【解决方案1】:

    按照以下步骤:

    1) 在构建阶段链接 xcode 中的静态库 -> 将二进制文件与库链接。

    2)在swift项目中添加库头文件。

    3)需要创建一个桥接头来调用库Api using (File > New > File),然后选择“Source”并点击“Header File”。

    4) 添加 无效停止A() startA(const char * szCmdLne) 在桥接头文件中。

    现在,您应该可以从您的 swift 代码中调用这些 API。 检查此以获取更多详细信息: http://www.swiftprogrammer.info/swift_call_cpp.html#step2

    【讨论】:

    • 谢谢!我设法使它在没有桥接文件的情况下工作,我在伞头文件中声明了该函数。唯一的问题是这些函数是公开的,所以使用这个 SDK 的每个人都可以看到/调用它们。我怎样才能将它们设为私有?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多