首先, 在 Swift 中是不能去调用 C++ 的代码的. 但是 Swift 可以调用 C 代码的, C 可以调用 C++. 我们可以通过 C 这个中间代码,让 Swift 可以去间接的调用 C++. 由于涉及 C++ 的编程部分, 这里不再赘述, 只描述 C 的调用问题.
使用 Module.map 桥接
-
建立 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 * }
-
在 Build Settings 中 Header Search Paths 与 System Framework Search Paths 中加入你的 module.map 路径.
-
引用 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',
}
网友评论