元件与工作灯静态库冲突

Symbol collisions with Worklight static library

本文关键字:静态 冲突 工作      更新时间:2023-10-16

我将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 库具有相同依赖项的第三方库?

libWorklightStaticLib.a 和 sqlcipher.framework 中确实有一些这样的符号。这很好。问题是这个库也在尝试添加这些。

可以尝试的一些方法:

  1. 使用-all_load-force_load

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

    • -force_load添加到链接器调用,包括存档的路径。此标志的工作方式与 -all_load 完全相同,但仅适用于指定的存档。您可以在此处阅读有关此内容的更多信息:https://stackoverflow.com/a/22264650/186909

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

    • http://angelolloqui.com/blog/31-How-to-fix-a-Duplicated-Symbols-error-on-binary-files
    • Xcode 中 2 个第三方库存在重复符号问题