Swift 引用 C/C++ Framework 的 H 文件的

2018-11-28  本文已影响7人  l蓝色梦幻

首先, 在 Swift 中是不能去调用 C++ 的代码的. 但是 Swift 可以调用 C 代码的, C 可以调用 C++. 我们可以通过 C 这个中间代码,让 Swift 可以去间接的调用 C++. 由于涉及 C++ 的编程部分, 这里不再赘述, 只描述 C 的调用问题.

使用 Module.map 桥接

  1. 建立 module.map 文件. 如下显示. 注意: 模拟器与真机的 h 位置不同

    module CommonCrypto [system] {
        header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/CommonCrypto/CommonCrypto.h"
        header "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/CommonCrypto/CommonRandom.h"
        //    link "CommonCrypto"
        export *
    }
    
  2. 在 Build Settings 中 Header Search Paths 与 System Framework Search Paths 中加入你的 module.map 路径.

  3. 引用 CommonCrypto , 这个时候就能正确使用了.

Pod 文件中导出 Module.map 文件

在 podspec 中添加如下代码:

    s.pod_target_xcconfig = {
      'SWIFT_INCLUDE_PATHS[sdk=iphoneos*]'           => '$(SRCROOT)/GearSwift/GearSwift/Cryption/Framework/iPhoneOS',
      'SWIFT_INCLUDE_PATHS[sdk=iphonesimulator*]'    => '$(SRCROOT)/GearSwift/GearSwift/Cryption/Framework/iPhoneSimulator',
    }
上一篇下一篇

猜你喜欢

热点阅读