元件与工作灯静态库冲突
Symbol collisions with Worklight static library
我将Worklight用于混合应用程序。为了扩展iOS功能,我尝试添加一个静态库。结果,我从 Linker 那里得到了一个关于符号冲突的错误,newLib
与libWorklightStaticLibProject
.
在将库包含在项目中之前,我尝试使用重新定义的方法名称添加头文件:
例如,对于我添加的方法_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 中确实有一些这样的符号。这很好。问题是这个库也在尝试添加这些。
可以尝试的一些方法:
-
使用
-all_load
和-force_load
:-
将
-all_load
添加到链接器调用。链接器标志将告诉链接器加载所有存档的所有对象文件,无论是否正在使用任何符号。 -
将
-force_load
添加到链接器调用,包括存档的路径。此标志的工作方式与 -all_load 完全相同,但仅适用于指定的存档。您可以在此处阅读有关此内容的更多信息:https://stackoverflow.com/a/22264650/186909
-
-
还有删除重复符号的教程,例如:
- http://angelolloqui.com/blog/31-How-to-fix-a-Duplicated-Symbols-error-on-binary-files
- Xcode 中 2 个第三方库存在重复符号问题
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- #为""定义宏;静态";针对不同的上下文
- cmake如何在fedora工作站中找到boost静态库包
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 将静态字符数组中的字符分配给动态分配的字符数组 - 访问冲突
- 协议缓冲区的静态链接会导致与现有符号冲突
- 使用静态 std::vector 类成员时出现访问冲突
- 类静态成员的冲突声明
- 将静态库转换为 DLL 会导致在 main 之前出现访问冲突
- constexpr静态结构类成员的声明冲突
- 静态库接口 (c++) 中未公开的类的名称冲突
- 从静态库使用 Boost Asio 时访问冲突异常
- 元件与工作灯静态库冲突
- 首次插入静态 STL 集会导致引发未经处理的异常0xC0000005:引发访问冲突
- 在C++中使用多个静态库解决冲突
- 静态QMap的声明冲突
- 在调试中有多个定义冲突的c++静态归档库
- 对静态库调用的访问冲突
- 模板、静态变量和诸如此类的声明冲突
- 将中等数量的T*静态强制转换为void*时发生访问冲突