架构x86_64找不到符号:在AppDelegate.o中引用的"_OBJC_CLASS_$_Mixpanel",__TMaCSo8Mixpanel。

3

我正在安装Mixpanel(由于更大的问题,我不使用CocoaPods),但是当我试图构建时出现了这个问题。显然,它是在链接过程中发生的:

Ld /Users/zheref/Library/Developer/Xcode/DerivedData/Skillet-gyrvrgajwggdcmhhtxflcerwovjx/Build/Products/Debug-iphonesimulator/Skillet.app/Skillet normal x86_64
cd /Users/zheref/Code/skillet/skillet-ios
export IPHONEOS_DEPLOYMENT_TARGET=8.1
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/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/iPhoneSimulator8.4.sdk -L/Users/zheref/Library/Developer/Xcode/DerivedData/Skillet-gyrvrgajwggdcmhhtxflcerwovjx/Build/Products/Debug-iphonesimulator -L/Users/zheref/Code/skillet/skillet-ios/Pods/Brightcove-Player-SDK/Library -L/Users/zheref/Code/skillet/skillet-ios/Pods/Google/Libraries -L/Users/zheref/Code/skillet/skillet-ios/Pods/GoogleAppUtilities/Libraries -L/Users/zheref/Code/skillet/skillet-ios/Pods/GoogleAuthUtilities/Libraries -L/Users/zheref/Code/skillet/skillet-ios/Pods/GoogleNetworkingUtilities/Libraries -L/Users/zheref/Code/skillet/skillet-ios/Pods/GoogleSignIn/Libraries -L/Users/zheref/Code/skillet/skillet-ios/Pods/GoogleSymbolUtilities/Libraries -L/Users/zheref/Code/skillet/skillet-ios/Pods/GoogleUtilities/Libraries -L/Users/zheref/Code/skillet/skillet-ios/Skillet -F/Users/zheref/Library/Developer/Xcode/DerivedData/Skillet-gyrvrgajwggdcmhhtxflcerwovjx/Build/Products/Debug-iphonesimulator -F/Users/zheref/Code/skillet/skillet-ios -F/Users/zheref/Code/vendors/parse-library-1.7.5 -filelist /Users/zheref/Library/Developer/Xcode/DerivedData/Skillet-gyrvrgajwggdcmhhtxflcerwovjx/Build/Intermediates/Skillet.build/Debug-iphonesimulator/Skillet.build/Objects-normal/x86_64/Skillet.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -objc_abi_version -Xlinker 2 -ObjC -lBCOVPlayerSDK -lGGLCore -lGGLSignIn -lGSDK_Overload -lGTMOAuth2_external -lGTMOAuth2_internal -lGTMSessionFetcher_core -lGTMSessionFetcher_full -lGTMStackTrace -lGTM_AddressBook -lGTM_DebugUtils -lGTM_GTMURLBuilder -lGTM_KVO -lGTM_NSDictionary+URLArguments -lGTM_NSScannerJSON -lGTM_NSStringHTML -lGTM_NSStringXML -lGTM_Regex -lGTM_RoundedRectPath -lGTM_StringEncoding -lGTM_SystemVersion -lGTM_UIFont+LineHeight -lGTM_core -lGTM_iPhone -lOpenInChrome -lPods-PaymentKit -lPods-Stripe -lSignIn -framework AVFoundation -framework AddressBook -framework CoreMedia -framework CoreText -framework Foundation -framework MediaPlayer -framework Security -framework StoreKit -framework SystemConfiguration -ObjC -lBCOVPlayerSDK -lGGLCore -lGGLSignIn -lGSDK_Overload -lGTMOAuth2_external -lGTMOAuth2_internal -lGTMSessionFetcher_core -lGTMSessionFetcher_full -lGTMStackTrace -lGTM_AddressBook -lGTM_DebugUtils -lGTM_GTMURLBuilder -lGTM_KVO -lGTM_NSDictionary+URLArguments -lGTM_NSScannerJSON -lGTM_NSStringHTML -lGTM_NSStringXML -lGTM_Regex -lGTM_RoundedRectPath -lGTM_StringEncoding -lGTM_SystemVersion -lGTM_UIFont+LineHeight -lGTM_core -lGTM_iPhone -lOpenInChrome -lPods-PaymentKit -lPods-Stripe -lSignIn -framework AVFoundation -framework AddressBook -framework CoreMedia -framework CoreText -framework Foundation -framework MediaPlayer -framework Security -framework StoreKit -framework SystemConfiguration -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator -Xlinker -add_ast_path -Xlinker /Users/zheref/Library/Developer/Xcode/DerivedData/Skillet-gyrvrgajwggdcmhhtxflcerwovjx/Build/Intermediates/Skillet.build/Debug-iphonesimulator/Skillet.build/Objects-normal/x86_64/Skillet.swiftmodule -mios-simulator-version-min=8.1 -licucore -framework QuartzCore -framework CoreGraphics -framework Accelerate -framework CoreTelephony -framework SystemConfiguration -framework Foundation -framework UIKit -framework Bolts -framework Social -framework Accounts -framework Crashlytics -framework AVFoundation -framework CoreMedia -framework Parse -framework CoreText -framework MediaAccessibility -framework MediaPlayer -framework CFNetwork -framework Security -framework AudioToolbox -framework CoreLocation -lsqlite3 -lz -framework MobileCoreServices -framework StoreKit -framework FBSDKShareKit -framework Fabric -framework FBSDKCoreKit -framework FBSDKLoginKit -lPods -Xlinker -dependency_info -Xlinker /Users/zheref/Library/Developer/Xcode/DerivedData/Skillet-gyrvrgajwggdcmhhtxflcerwovjx/Build/Intermediates/Skillet.build/Debug-iphonesimulator/Skillet.build/Objects-normal/x86_64/Skillet_dependency_info.dat -o /Users/zheref/Library/Developer/Xcode/DerivedData/Skillet-gyrvrgajwggdcmhhtxflcerwovjx/Build/Products/Debug-iphonesimulator/Skillet.app/Skillet

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_Mixpanel", referenced from:
  __TMaCSo8Mixpanel 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)

我正在使用Swift语言(完全没有Objective-C)。
提前感谢。
更新1:
当我放置以下代码时出现问题: Mixpanel.sharedInstanceWithToken(MIXPANEL_TOKEN); 在此之前没有问题。
当我将Mixpanel代码安装到项目中或从桥接标头导入时,都不会出现问题。

即使您的代码不使用Objective-C,该特定库也是用它编写的。我不确定您是否需要为此特定情况创建桥接标头。请参考:http://stackoverflow.com/questions/28016246/mixpanel-does-not-work-with-swift和https://medium.com/ios-os-x-development/how-to-implement-mixpanel-into-your-swift-app-in-5-minutes-xcode-6-3-19263621c13b。还要看一下这个:https://github.com/soffes/Mixpanel。 - Miknash
1
似乎桥接文件没有问题。当我从桥接头文件中导入它时,没有任何问题。问题出现在我放置Mixpanel.sharedInstanceWithToken(MIXPANEL_TOKEN);这一行的时候。 - Sergio Daniel L. García
你在使用CocoaPods时遇到了什么问题吗?我在所有的项目中都使用它们,从未遇到过问题。在这种情况下,请确保库文件已包含在您正在编译的目标中。 - Duck
是的,我也遇到了同样的问题...请问您是如何解决这个问题的? - Bhoomi Jagani
你在那个类中导入了框架吗?可能需要在类的顶部导入Mixpanel框架? - bolnad
1个回答

7

我曾经遇到过同样的问题,我只是尝试重新将框架文件单独拖入我的项目中。

Like:

不要直接拖动文件夹,只需将文件拖入项目中。
还要记得链接框架。
SystemConfiguration、CoreTelephony、Accelerate、Security、CFNetwork、QuartzCore、libicucore.tbd。

这个步骤对我很有效,我还创建了一个文件组,然后复制了这些文件。关于框架,有些框架在文档中没有列出,我逐个添加框架并尝试构建,只有在添加最后一个框架libicucore.tbd后才成功。 - bitsand
1
我可以确认并添加一个tips。当我拖入文件夹时,文件夹是蓝色的。但是当我创建新的分组并拖入文件时,文件夹变成了黄色(与其他文件夹相同)。因此,如果您在mixpanel上有一个蓝色文件夹,那么很可能是因为您将文件夹拖入导致了这个奇怪的链接器错误。 - Aggressor
我刚刚在我的版本控制中注意到,直到我手动添加文件之前,pbxproj文件都没有改变。因此,我认为这意味着当文件夹被添加时,它没有与主要的pbxproj链接起来,但是手动拖动文件实际上会创建该链接(因此,您可以通过查看添加Mixpanel文件时pbxproj文件是否实际更改来验证此问题)。 - Aggressor
@Aggressor:是的,没错,这就是我们可以验证它的方式。 - Suhas Arvind Patil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接