如何在 x86_64 Swift 项目中使用 i386 框架

How to use i386 Framework in x86_64 Swift Project

我为 CanonEDSDK 创建了一个 Objective-C 框架,其中 EdsInitializeSDK 仅支持 i386 架构。我将框架导入 Swift 项目,但在调用 EdsInitializeSDK() 时出现以下错误:

"_EdsInitializeSDK", referenced from: test.AppDelegate.applicationDidFinishLaunching (test.AppDelegate)(__ObjC.NSNotification) -> () in AppDelegate.o

ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

正如@MartinR 在评论中所描述的,Swift 是 64 位的,所以所有使用的库都应该是 64 位的。 OSX 的 EDSDK v3.2.1 确实包含您可以使用的 64 位版本。

请注意,在这个 64 位版本中,对 RAW 文件的操作(保存为 TIFF,但甚至读取信息)只能对由一组有限的新相机创建的文件执行:

  • EOS 5DS / EOS 5DS R /
  • EOS REBEL T6s / EOS 760D / EOS 8000D /
  • EOS REBEL T6i / EOS 750D / EOS Kiss X8i /
  • EOS M3

对旧相机文件的操作将尝试动态加载 32 位库,导致运行时动态链接错误!