NSArray * bundlePaths = [NSBundle pathsForResourcesOfType:@"bundle" inDirectory:[[Preferences standardPreferences] pluginsFolder]];NSEnumerator * enumerator = [bundlePaths objectEnumerator];Nsstring * bundlePath;NSMutableArray * plugins = [NSMutableArray array];while ( (bundlePath = [enumerator nextObject]) != nil ){ NSBundle * pluginBundle = [NSBundle bundleWithPath:bundlePath]; Class principalClass = [pluginBundle principalClass]; ID <VIEnnaPlugin,NSObject> plugin = [[principalClass alloc] init]; [plugins addobject:plugin]; [plugin release]; NSLog(@"Loaded plugin %@ [main class: %@]",bundlePath,principalClass);}
在控制台输出中,我收到以下错误消息:
2010-07-09 08:55:40.128 VIEnna[74065:a0f] Error loading /Users/dcrosta/library/Application Support/VIEnna/PlugIns/synkPlugin.bundle/Contents/MacOS/synkPlugin: dlopen(/Users/dcrosta/library/Application Support/VIEnna/PlugIns/synkPlugin.bundle/Contents/MacOS/synkPlugin,265): Symbol not found: _OBJC_CLASS_$_Article Referenced from: /Users/dcrosta/library/Application Support/VIEnna/PlugIns/synkPlugin.bundle/Contents/MacOS/synkPlugin Expected in: flat namespace in /Users/dcrosta/library/Application Support/VIEnna/PlugIns/synkPlugin.bundle/Contents/MacOS/synkPlugin
仅在64位模式下运行时才会发生此错误,而不是在32位模式下运行.维也纳和synkPlugin都使用“标准32/64通用”设置进行编译,synkPlugin还有额外的链接器标志“-undefined dynamic_lookup”,据我所知,它允许它链接到在VIEnna.app中找到的类而没有将这些类的代码编译成自己的二进制文件.
Stack Overflow上对此错误的其他引用与iPhone / iPod touch和iPad之间的UIKit差异有关 – 在这些情况下,框架实际上缺少iPhone / iPod touch上的类.就我而言,我确信VIEnna.app在其中的某个地方有Article类,因为它是由相同的代码构建到32位版本的.
以前有没有人看到这样的错误?有什么建议在哪里寻找更多信息?谢谢.
解决方法 在维也纳目标的构建设置中,根据GCC 4.2 – 代码生成取消选中默认隐藏的符号(GCC_SYMBolS_PRIVATE_EXTERN). 总结以上是内存溢出为你收集整理的objective-c – 未找到符号:_OBJC_CLASS _ $_文章全部内容,希望文章能够帮你解决objective-c – 未找到符号:_OBJC_CLASS _ $_文章所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)