如何在 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 位库,导致运行时动态链接错误!
我为 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 位库,导致运行时动态链接错误!