Столкновение символов со статической библиотекой Worklight

Я использую Worklight для гибридного приложения. Чтобы расширить возможности iOS, я пытаюсь добавить статическую библиотеку. В результате у меня возникла ошибка от Линкера о столкновениях символов newLib с libWorklightStaticLibProject,

Я попытался добавить заголовочный файл с переопределением имени метода, прежде чем включать библиотеку в проект:

Например, для метода _OBJC_CLASS_$_KeychainItemWrapper я добавил

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

Я также пытался изменить символы файла .o, но не смог объединить отредактированные файлы .o в одну статическую библиотеку.

Часть Linkers ошибка.

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

0

Решение

Действительно, некоторые из этих символов находятся внутри libWorklightStaticLib.a и sqlcipher.framework. Что хорошо. Проблема в том, что эта библиотека пытается добавить и их.

Несколько вещей, чтобы попробовать:

  1. использование -all_load а также -force_load:

    • добавлять -all_load на вызов компоновщика. Флаг компоновщика скажет компоновщику загрузить все объектные файлы всех архивов независимо от того, используется какой-либо символ или нет.

    • добавлять -force_load на вызов компоновщика, включая путь к архиву. Этот флаг работает точно так же, как -all_load, но только для указанного архива. Вы можете прочитать больше об этом здесь: https://stackoverflow.com/a/22264650/186909

  2. Есть также учебные пособия по удалению повторяющихся символов, например:

1

Другие решения


По вопросам рекламы [email protected]