1

私たちは従来のiOSの目的Cアプリを持っています。我々は、 "迅速な"機能を追加したい。 「客観的C」プロジェクトから参照する別の「Cocoa touch framework」プロジェクトを作成しました。私は/呼び出ししようとしたとき、私はこのエラーを取得していますObjective Cの目的のプロジェクトから別のプロジェクトにswiftファイルを呼び出します。 Apple Mach-o Linkerエラー

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)

迅速ライブラリの名前は、「utilsの」であるから迅速中のいずれかの方法を初期化。従来のobjective c appでは、他のプロジェクトの依存関係も使用されています。申し訳ありませんが、xcodeへの初心者。

答えて

0

Objective-CアプリでSwiftフレームワークをどのように参照しているか分かりませんでしたが、アプリをビルドしようとしているプラ​​ットフォームとは異なるプラットフォーム用のバイナリフレームワークを参照したとしか推測できません。

たとえば、デバイスのフレームワークをビルド設定の下にあるフレームワーク検索パスに作成し、結果の.frameworkディレクトリを含むディレクトリへのパスを作成した後、シミュレータ用のアプリ。これは、正しいフレームワークバイナリ(この場合はシミュレータ用に構築されたもの)を使用するとうまくいくでしょう。

ただし、これを行うより洗練された方法は、アプリケーションにSwiftフレームワークを埋め込むことです。フレームワークとアプリケーションが別のプロジェクトにあると仮定すると、次のようになります。

  • フレームワークプロジェクトがXcodeで開いていないことを確認してください。
  • Xcodeでアプリプロジェクトを開きます。
  • Finderのフレームワークの.xcodeprojをXcodeのアプリプロジェクトにドラッグして参照を作成します。
  • [一般] - > [埋め込みバイナリ]で、Swift .frameworkを追加します。
  • アプリケーションをビルドするとき、Xcodeは正しいアーキテクチャのフレームワークを構築し、それをあなたのアプリに埋め込みます。

フレームワークの埋め込みの詳細については、https://developer.apple.com/library/content/technotes/tn2435/_index.htmlを参照してください。ところで、リンカが失敗したときに、必要なアーキテクチャが不足しているファイルについて、ldから警告が表示されましたか?

+0

優れたomniProg。あなたの手順は問題を解決しました。ワークスペースから「迅速なフレームワーク」プロジェクトを削除しました。ファインダーからxcode "App"プロジェクトにドラッグアンドドロップして、今すぐ動作します。私がしなければならなかった唯一のステップは、アプリケーションのプロジェクトプロパティの「一般」タブで「常に標準のライブラリを埋め込む」を「はい」に設定したことです.xCodeはVisual Studioで12年以上働いた後、我々は客観的なCよりもCに近い素早く持っている.. – teeboy

関連する問題