C++ 与Worklight静态库的符号冲突
我使用混合应用程序的Worklight。为了扩展iOS功能,我尝试添加一个静态库。结果,我从链接器中得到一个关于符号冲突的错误C++ 与Worklight静态库的符号冲突,c++,ios,ibm-mobilefirst,static-libraries,dependency-management,C++,Ios,Ibm Mobilefirst,Static Libraries,Dependency Management,我使用混合应用程序的Worklight。为了扩展iOS功能,我尝试添加一个静态库。结果,我从链接器中得到一个关于符号冲突的错误newLib与libWorklightStaticLibProject 在将库包含在项目中之前,我尝试添加具有重新定义方法名称的头文件: 例如,对于方法\u OBJC\u CLASS\u$\u KeychainItemWrapper,我添加了 #define _OBJC_CLASS_$_KeychainItemWrapper PREFIX_OBJC_CLASS_$_Key
newLib
与libWorklightStaticLibProject
在将库包含在项目中之前,我尝试添加具有重新定义方法名称的头文件:
例如,对于方法\u OBJC\u CLASS\u$\u KeychainItemWrapper
,我添加了
#define _OBJC_CLASS_$_KeychainItemWrapper PREFIX_OBJC_CLASS_$_KeychainItemWrapper
#include "newLib/header.h"
#undef _OBJC_CLASS_$_KeychainItemWrapper
我还尝试更改.o文件的符号,但我无法将已编辑的.o文件合并到单个静态库中
部分链接器错误
请帮我解决这个问题。如何使用与Worklight libs具有相同依赖关系的第三方库?在libWorklightStaticLib.a和sqlcipher.framework中确实存在一些这样的符号。这很好。问题是这个库也在尝试添加这些 有些事情可以尝试:
-所有荷载和-强制荷载:
- 将
-all_load
添加到链接器调用。链接器标志将告诉链接器加载所有存档的所有对象文件,无论是否有符号正在使用
- 将
-force_load
添加到链接器调用,包括存档的路径。此标志的工作方式与-all_load完全相同,但仅适用于指定的存档。您可以在此处阅读更多关于此的信息:
提及您尝试使用的第三方库,以及Worklight版本和内部版本号。我尝试使用库RtPKCS11ECP-crypto extension在蓝牙令牌上进行数字签名。Worklight的版本是6.2.0.01.20141120-1827它是否有我们可以从中下载的官方网站?当然,您可以从中获得它。我还有一个带有冲突的.o文件列表(通过Xcode链接器)。谢谢你,伊丹。这不是通用的解决方案,但在我的情况下,它是有效的。我认为,这个问题可以追溯到以后更新后。
...
duplicate symbol _OBJC_CLASS_$_KeychainItemWrapper in:
[project_folder]/iphone/native/Classes/newLib.framework/newLib(KeychainItemWrapper.o)
[project_folder]/iphone/native/WorklightSDK/libWorklightStaticLibProject.a(KeychainItemWrapper.o)
duplicate symbol _OBJC_IVAR_$_KeychainItemWrapper.genericPasswordQuery in:
[project_folder]/iphone/native/Classes/newLib.framework/newLib(KeychainItemWrapper.o)
[project_folder]/iphone/native/WorklightSDK/libWorklightStaticLibProject.a(KeychainItemWrapper.o)
duplicate symbol _OBJC_IVAR_$_KeychainItemWrapper.keychainItemData in:
[project_folder]/iphone/native/Classes/newLib.framework/newLib(KeychainItemWrapper.o)
[project_folder]/iphone/native/WorklightSDK/libWorklightStaticLibProject.a(KeychainItemWrapper.o)
duplicate symbol _OBJC_METACLASS_$_KeychainItemWrapper in:
[project_folder]/iphone/native/Classes/newLib.framework/newLib(KeychainItemWrapper.o)
[project_folder]/iphone/native/WorklightSDK/libWorklightStaticLibProject.a(KeychainItemWrapper.o)
duplicate symbol _OBJC_CLASS_$_Reader in:
[project_folder]/iphone/native/Classes/newLib.framework/newLib(Reader.o)
[project_folder]/iphone/native/WorklightSDK/libWorklightStaticLibProject.a(Reader.o)
...