与Worklight静态库的符号冲突

时间:2014-11-26 21:03:28

标签: c++ ios ibm-mobilefirst static-libraries dependency-management

我将Worklight用于混合应用程序。为了扩展iOS功能,我尝试添加静态库。结果我遇到了Linker关于符号碰撞newLiblibWorklightStaticLibProject的错误。

在项目中包含库之前,我尝试使用重新定义方法名称添加头文件:

例如,对于方法_OBJC_CLASS_$_KeychainItemWrapper,我添加了

#define _OBJC_CLASS_$_KeychainItemWrapper PREFIX_OBJC_CLASS_$_KeychainItemWrapper
#include "newLib/header.h"
#undef _OBJC_CLASS_$_KeychainItemWrapper

我还尝试更改.o文件的符号,但我无法将编辑过的.o文件合并到一个静态库中

部分连接器错误。

...
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)
...

请帮我解决问题。我如何使用具有相同依赖关系的第三方库作为Worklight库?

1 个答案:

答案 0 :(得分:1)

在libWorklightStaticLib.a和sqlcipher.framework中确实存在一些这些符号。哪个好。问题是这个库也试图添加这些。

有些事情要尝试:

  1. 使用-all_load-force_load

    • -all_load添加到链接器调用。链接器标志将告诉链接器加载所有存档的所有目标文件,无论是否使用任何符号。

    • -force_load添加到链接器调用,包括存档的路径。此标志与-all_load完全相同,但仅适用于指定的存档。您可以在此处详细了解:https://stackoverflow.com/a/22264650/186909

  2. 还有删除重复符号的教程,例如: