Префикс файлов, чтобы избежать конфликтов символов между внешними структурами
Я использую две внешние рамки в моем коде 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) с тем же определением макроса, чтобы он экспортировал и использовал измененные имена символов.