objective-c – 导出符号文件:Objective C派生类成员,64位

objective-c – 导出符号文件:Objective C派生类成员,64位,第1张

概述我有一个基于 Cocoa的通用动态库,它还包含更多静态库,我想从中导出功能.似乎我不能在不使用导出符号文件的情况下做最新的事情,这对我来说很好……不知何故.我没有在“默认隐藏符号”设置的任何地方使用(GCC_SYMBOLS_PRIVATE_EXTERN,-fvisibility = hidden).   当我尝试从动态库中导出基类时出现问题,更具体地说,当尝试在未包含在库中的派生类中使用其成员时, 我有一个基于 Cocoa的通用动态库,它还包含更多静态库,我想从中导出功能.似乎我不能在不使用导出符号文件的情况下做最新的事情,这对我来说很好……不知何故.我没有在“默认隐藏符号”设置的任何地方使用(GCC_SYMBolS_PRIVATE_EXTERN,-fvisibility = hIDden).
  当我尝试从动态库中导出基类时出现问题,更具体地说,当尝试在未包含在库中的派生类中使用其成员时,甚至更具体地在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位所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1006495.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存