дубликат символа _fopen_file_func в коде C в проекте target-c - PullRequest
2 голосов
/ 21 февраля 2012

В моем проекте IOS я использую несколько статических фреймворков, чем использую мини-код в ее коде.

при компиляции у меня появляется ошибка для дублированного символа.

если эта ошибка связана с классом, это действительно просто (переименовать класс, исправить ошибку)

Но в моем случае дублирующиеся символы предоставляют из файлов "minizip" (таких как ioapi.c, zip.c unzip.c), которые они загружаются в фреймворки.

Как можно правильно работать в этом случае?

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 07 августа 2014

@ Pixman: присмотритесь к файлам, которые вы (в последнее время) импортировали в свой проект.

Я обнаружил ситуацию, когда две версии одинаковых файлов (т. Е. ioapi.c, ioapi.h,mztools.c, mztools.h, unzip.c, unzip.h, zip.c, zip.h) были интегрированы в проект (на разных уровнях), поэтому создавались повторяющиеся символы.

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

Один из способов проверить, существуют ли в вашем проекте дубликаты имен файлов (и, вероятно, символов), - это опция Скомпилированные источники , доступная в разделе Этапы сборки проекта.
Дополнительным преимуществом этого представления является то, что путь к каждому файлу является видимым, и его можно использовать, чтобы выяснить, какие (из дубликатов) файлы вы хотите удалить.

0 голосов
/ 22 февраля 2012

Это обратная сторона единственного пространства имен Objective-C.

Если вы можете получить любой из заголовочных файлов, удалите или переименуйте их.Если вы не можете получить их, вам нужно получить исходные коды и переименовать / перестроить их, или использовать другую библиотеку.

...