基础框架中的单个方法的符号可能未定义?
问题描述:
在我用Swift编写的Cocoa应用程序(OS X Mavericks上的Xcode 6 Beta 6)中,我想使用一个bundle资源。是不使用任何外部库,但只有WebKit.framework
。我遇到了我写的代码奇数连接问题,并可能将其降低到第二行中的这个片段:基础框架中的单个方法的符号可能未定义?
var bundle = NSBundle.mainBundle()
// Leads to linker error!
var path = bundle.pathForResource(resource, ofType: "js")
如果我注释掉pathForResource
线它编译和运行良好。否则它会导致构建失败。这是在Xcode中显示了错误的输出:
Ld /Users/Peter/Library/Developer/Xcode/DerivedData/OFrame-cyxuoheofsrztibvnaxacjxvlzsl/Build/Products/Debug/OFrame.app/Contents/MacOS/OFrame normal x86_64
cd /Users/Peter/Projekte/OFrame
export MACOSX_DEPLOYMENT_TARGET=10.9
/Applications/Xcode6-Beta6.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch x86_64 -isysroot /Applications/Xcode6-Beta6.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -L/Users/Peter/Library/Developer/Xcode/DerivedData/OFrame-cyxuoheofsrztibvnaxacjxvlzsl/Build/Products/Debug -F/Users/Peter/Library/Developer/Xcode/DerivedData/OFrame-cyxuoheofsrztibvnaxacjxvlzsl/Build/Products/Debug -filelist /Users/Peter/Library/Developer/Xcode/DerivedData/OFrame-cyxuoheofsrztibvnaxacjxvlzsl/Build/Intermediates/OFrame.build/Debug/OFrame.build/Objects-normal/x86_64/OFrame.LinkFileList -Xlinker -rpath -Xlinker @executable_path/../Frameworks -mmacosx-version-min=10.9 -lswiftCore -L/Applications/Xcode6-Beta6.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx -Xlinker -force_load -Xlinker /Applications/Xcode6-Beta6.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_macosx.a -Xlinker -add_ast_path -Xlinker /Users/Peter/Library/Developer/Xcode/DerivedData/OFrame-cyxuoheofsrztibvnaxacjxvlzsl/Build/Intermediates/OFrame.build/Debug/OFrame.build/Objects-normal/x86_64/OFrame.swiftmodule -framework WebKit -Xlinker -dependency_info -Xlinker /Users/Peter/Library/Developer/Xcode/DerivedData/OFrame-cyxuoheofsrztibvnaxacjxvlzsl/Build/Intermediates/OFrame.build/Debug/OFrame.build/Objects-normal/x86_64/OFrame_dependency_info.dat -o /Users/Peter/Library/Developer/Xcode/DerivedData/OFrame-cyxuoheofsrztibvnaxacjxvlzsl/Build/Products/Debug/OFrame.app/Contents/MacOS/OFrame
Undefined symbols for architecture x86_64:
"__TFSs26_forceBridgeFromObjectiveCU__FTPSs9AnyObject_MQ__Q_", referenced from:
__TFC6OFrame15FrameController16injectJavaScriptfS0_FCSo8NSStringT_ in FrameController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我读到架构问题的框架,但他们都被有关框架作为一个整体。不是使用单一方法。这让我感到困惑。更令人恼火的是NSBundle.pathForResource
是基础框架中的一个类方法。对于最终需要清除的构建对象是否有缓存?
我感到诅咒。每当我尝试用Xcode做某件事时,我都会遇到最奇怪的问题。