Префикс файлов, чтобы избежать конфликтов символов между внешними структурами

Я использую две внешние рамки в моем коде IOS. Оба фреймворка внутренне используют PLCrashReoprter рамки, из-за которых я получаю повторяющиеся ошибки символов.

Теперь один из фреймворков, то есть фреймворк аварийного репортера, имеет возможность добавить префикс к именам / символам файлов. Ниже приведен код для добавления префикса в nameSpace.h:


#define PLCRASHREPORTER_PREFIX AcmeCo

#ifdef PLCRASHREPORTER_PREFIX

// We need two extra layers of indirection to make CPP substitute
// the PLCRASHREPORTER_PREFIX define.
#define PLNS_impl2(prefix, symbol) prefix ## symbol
#define PLNS_impl(prefix, symbol) PLNS_impl2(prefix, symbol)
#define PLNS(symbol) PLNS_impl(PLCRASHREPORTER_PREFIX, symbol)

#define PLCrashMachExceptionServer          PLNS(PLCrashMachExceptionServer)
#define PLCrashReport                       PLNS(PLCrashReport)
#define PLCrashReportApplicationInfo        PLNS(PLCrashReportApplicationInfo)
#define PLCrashReportBinaryImageInfo        PLNS(PLCrashReportBinaryImageInfo)
#define PLCrashReportExceptionInfo          PLNS(PLCrashReportExceptionInfo)

Теперь ошибкаcomes Apple Mach-O Linker Error"

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_AcmeCoPLCrashReport", referenced from:
      objc-class-ref in CrashReporter.o

Я добавил nameSpace.h файл выше всех включает.

Пожалуйста, ведите меня, как перепробовал все возможные вещи, но без толку Заранее спасибо!!

1 ответ

Решение

Вам необходимо перекомпилировать соответствующую фреймворк (все файлы.c) с тем же определением макроса, чтобы он экспортировал и использовал измененные имена символов.

Другие вопросы по тегам