我们正在构建一个主要使用Obj-C/Cocoa编写的Mac OSX应用程序.然后,应用程序静态链接一些第三方库,用C/C++编写并由我们编译(在命令行上,使用MacPorts或通常的"./configure && make";所有都是通用二进制文件).
该应用程序运行正常,但广告编译时我们总是得到这些奇怪的链接器警告:
ld: warning: direct access in ___cxx_global_var_init17 to global weak symbol __ZGVN4i18n12phonenumbers9SingletonINS0_15PhoneNumberUtilEE8instanceE means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in ___cxx_global_var_init17 to global weak symbol __ZGVN4i18n12phonenumbers9SingletonINS0_15PhoneNumberUtilEE8instanceE means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in ___cxx_global_var_init17 to global weak symbol __ZN5boost10scoped_ptrIN4i18n12phonenumbers15PhoneNumberUtilEED1Ev means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in ___cxx_global_var_init17 to global weak symbol __ZN4i18n12phonenumbers9SingletonINS0_15PhoneNumberUtilEE8instanceE means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in ___cxx_global_var_init17 to global weak symbol __ZGVN4i18n12phonenumbers9SingletonINS0_15PhoneNumberUtilEE8instanceE means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
Run Code Online (Sandbox Code Playgroud)
这来自C/C++库.我们正在与这些库链接:
请注意:
ins*_*r-g 23
xcode提出的解决方案使用boost:链接器(Id)关于可见性设置的警告不起作用:"默认情况下隐藏的符号"始终为"YES".
这与设置为"YES"的关系较少,更多的是与在所有项目中设置为相同的值有关.依赖于其他库的库/项目需要具有"默认隐藏的符号"的类似设置,以便正确链接并且没有错误/警告.
我之前遇到过这种情况,并且对所有项目进行Xcode的简单更改以确保设置匹配通常可以解决问题.既然听起来你也在编译命令行,那么你需要注意的是-fvisibility
参数gcc
.
归档时间: |
|
查看次数: |
19876 次 |
最近记录: |