gpt4 book ai didi

objective-c - 在与 Objective C 项目不同的项目中调用 swift 文件。 Apple Mach-o 链接器错误

转载 作者:行者123 更新时间:2023-11-28 08:11:01 30 4
gpt4 key购买 nike

我们有一个遗留的 iOS Objective-C 应用程序。我们想添加“快速”功能。创建了一个单独的“Cocoa touch framework”项目以从“objective C”项目中引用它。当我尝试从 objective-c 快速调用/初始化任何方法时出现此错误

Ld /Users/teeboy/Library/Developer/Xcode/DerivedData/super-aybvkjtipygrszeyqsnbmtglaaqi/Build/Products/Debug-iphonesimulator/super.app/super normal x86_64 cd /Users/teeboy/iWorkbench/super export IPHONEOS_DEPLOYMENT_TARGET=10.0 export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator10.3.sdk -L/Users/teeboy/Library/Developer/Xcode/DerivedData/super-aybvkjtipygrszeyqsnbmtglaaqi/Build/Products/Debug-iphonesimulator -F/Users/teeboy/Library/Developer/Xcode/DerivedData/super-aybvkjtipygrszeyqsnbmtglaaqi/Build/Products/Debug-iphonesimulator -F/Users/teeboy/iWorkbench/super -filelist /Users/teeboy/Library/Developer/Xcode/DerivedData/super-aybvkjtipygrszeyqsnbmtglaaqi/Build/Intermediates/super.build/Debug-iphonesimulator/super.build/Objects-normal/x86_64/super.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -mios-simulator-version-min=10.0 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/teeboy/Library/Developer/Xcode/DerivedData/super-aybvkjtipygrszeyqsnbmtglaaqi/Build/Intermediates/super.build/Debug-iphonesimulator/super.build/Objects-normal/x86_64/super_lto.o -Xlinker -no_deduplicate -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -ObjC -all_load -Xlinker -sectcreate -Xlinker __TEXT -Xlinker __entitlements -Xlinker /Users/teeboy/Library/Developer/Xcode/DerivedData/super-aybvkjtipygrszeyqsnbmtglaaqi/Build/Intermediates/super.build/Debug-iphonesimulator/super.build/super.app.xcent -lz -lPatientSearch -framework MapKit -framework ZipArchive -framework QuartzCore -lMobuleMenuCell -framework OCMockitoIOS -framework Security -lModuleNavigation -lToDoList -framework CoreData -lPatientChart -framework CoreText -framework Crashlytics -framework CoreLocation -lVisitNotes -lDataAccess -lDashboard -framework MobileCoreServices -framework SystemConfiguration -lframework -lsuperCommon -framework UIKit -framework OCHamcrestIOS -framework Foundation -framework CoreGraphics -Xlinker -dependency_info -Xlinker /Users/teeboy/Library/Developer/Xcode/DerivedData/super-aybvkjtipygrszeyqsnbmtglaaqi/Build/Intermediates/super.build/Debug-iphonesimulator/super.build/Objects-normal/x86_64/super_dependency_info.dat -o /Users/teeboy/Library/Developer/Xcode/DerivedData/super-aybvkjtipygrszeyqsnbmtglaaqi/Build/Products/Debug-iphonesimulator/super.app/super

Undefined symbols for architecture x86_64: "_OBJC_CLASS_$__TtC5utils3zip", referenced from: objc-class-ref in libDashboard.a(ASLandingPageVC.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

swift 库的名称是“utils”。旧版 Objective C 应用程序使用了一些其他项目依赖项。抱歉,xcode 新手。

最佳答案

在不知道您如何在 Objective-C 应用程序中引用 Swift 框架的确切情况下,我只能猜测您引用了一个框架二进制文件,该二进制文件是为与您尝试为其构建应用程序的平台不同的平台构建的。

例如,如果您为设备构建框架,然后在应用的build设置下的框架搜索路径中包含指向包含生成的 .framework 目录的目录的路径,然后尝试构建应用,就会发生这种情况对于模拟器。如果您使用正确的框架二进制文件(在本例中是为模拟器构建的),它将起作用。

但是,更优雅的方法是将 Swift 框架嵌入到您的应用程序中。假设框架和应用程序在不同的项目中,您可以执行以下操作:

  • 确保框架项目未在 Xcode 中打开。
  • 在 Xcode 中打开应用项目。
  • 将框架的 .xcodeproj 从 Finder 拖到 Xcode 中的应用程序项目以创建引用。
  • 在常规 -> 嵌入式二进制文件下添加您的 Swift .framework。
  • 当您构建应用时,Xcode 将为正确的架构构建框架,并使用它并将其嵌入到您的应用中。

参见 https://developer.apple.com/library/content/technotes/tn2435/_index.html有关嵌入框架的更多信息。顺便说一句,当链接器失败时,您是否还看到来自 ld 的关于文件缺少所需架构的警告?

关于objective-c - 在与 Objective C 项目不同的项目中调用 swift 文件。 Apple Mach-o 链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43792986/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com