当我尝试从动态库中导出基类时出现问题,更具体地说,当尝试在未包含在库中的派生类中使用其成员时,甚至更具体地在64位构建中使用它时:
“
未定义的符号:
“_OBJC_IVAR _ $_ PluginBase.fConn”
“
我知道64位更改: http://developer.apple.com/library/mac/#releasenotes/Cocoa/RN-ObjectiveC/_index.html,“64位类和实例变量访问控制”部分
当然,如果我将_OBJC_IVAR _ $_ PluginBase.fConn添加到导出文件中,一切都有效…但仅针对64位版本,32位版本不知道这些事情:
“
未定义的符号:
“_OBJC_IVAR _ $_ PluginBase.fConn”,引自:
-exported_symbol [s_List]命令行选项
“
唯一的解决方案似乎是另一种解决方法:拥有两个导出文件.但是……我不能对EXPORTED_SYMBolS_file设置使用“添加构建设置条件”:-S.
任何想法(除了使用公共访问方法)?
解决方法 您可以使用xcconfig文件进行体系结构条件构建设置.看起来它不可能通过GUI.创建包含以下内容的Build Configuration文件:EXPORTED_SYMBolS_file[arch=i386]=$(SRCROOT)/SymbolsList32BitEXPORTED_SYMBolS_file[arch=x86_64]=$(SRCROOT)/SymbolsList64Bit
然后在项目设置中,将该文件设置为项目的构建配置,您应该很高兴. (显然你必须让路径指向你的文件,但希望你能得到这个想法.)
它对我有用. (FWIW你也可以以SDK名称为条件,比如MY_SETTING [sdk = iphoneos *] = FOO,MY_SETTING [sdk = mac] = bar等)
希望有所帮助!
总结以上是内存溢出为你收集整理的objective-c – 导出符号文件:Objective C派生类成员,64位全部内容,希望文章能够帮你解决objective-c – 导出符号文件:Objective C派生类成员,64位所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)