Я разрабатываю статическую библиотеку для ПК / Iphone.
Библиотека называется libNerv.lib / libNERV.a
Проект написан на C ++ (+ Objective C ++ для iphone)
До сих пор все работало нормально для ПК и iphone.Игровое приложение использует библиотеку и прекрасно ее связывает.но теперь я должен использовать libpng для проекта.Я хочу поделиться одной библиотекой, поэтому я включил файл .c из libpng в свой библиотечный проект.На windows все работает отлично!Игра может связываться с моей библиотекой без проблем.
Сегодня я перешел на Iphone, добавил файлы libpng в проект iphone, и библиотека работает нормально.Как только я создаю игровое приложение, компоновщик выходит из строя со следующими сообщениями:
"_png_read_image", referenced from:
NERV::Video::LoadPNG::loadImage(NERV::IO::IFileReader*) constin libNERV.a(LoadPNG.o)
"_png_create_read_struct", referenced from:
NERV::Video::LoadPNG::loadImage(NERV::IO::IFileReader*) constin libNERV.a(LoadPNG.o)
"_png_read_end", referenced from:
NERV::Video::LoadPNG::loadImage(NERV::IO::IFileReader*) constin libNERV.a(LoadPNG.o)
"_png_destroy_read_struct", referenced from:
NERV::Video::LoadPNG::loadImage(NERV::IO::IFileReader*) constin libNERV.a(LoadPNG.o)
NERV::Video::LoadPNG::loadImage(NERV::IO::IFileReader*) constin libNERV.a(LoadPNG.o)
NERV::Video::LoadPNG::loadImage(NERV::IO::IFileReader*) constin libNERV.a(LoadPNG.o)
NERV::Video::LoadPNG::loadImage(NERV::IO::IFileReader*) constin libNERV.a(LoadPNG.o)
"_png_read_info", referenced from:
NERV::Video::LoadPNG::loadImage(NERV::IO::IFileReader*) constin libNERV.a(LoadPNG.o)
"_png_read_update_info", referenced from:
NERV::Video::LoadPNG::loadImage(NERV::IO::IFileReader*) constin libNERV.a(LoadPNG.o)
ld: symbol(s) not found
collect2: ld returned 1 exit status
Это проблема, потому что он просто игнорирует все мои попытки.(ПРИМЕЧАНИЕ: он работает с VS 2008 на ПК !!) Я пытался избавиться от ошибок компоновщика несколькими способами:
Я пытался изменить все файлы libpng с .c на cpp, которые работали довольно хорошо,Мне просто нужно было решить 2 ошибки типа (void * to char *), но у меня были те же ошибки.Я попытался создать собственную библиотеку для файлов libpng.Но это тоже не сработало.
Я пытался открыть свой libNerv.a с помощью ar, libtool, ranlib, но безуспешно (только что сказал, что он создан с помощью fat ... или что-то в этом роде)
Файлы libpng используют объявления extern C для проектов cpp, поэтому я не знаю, хорошо ли это скомпилировать с помощью cpp.Может быть, кто-то знает больше об этом тоже.
Есть кое-что, что я еще не пробовал.Я добавлю файлы libpng в игровое приложение и скомпилирую его с приложением, но я не думаю, что это будет работать.
(Примечание: все проблемы со ссылками выполняются в одном методе, и я не используюlibpng где-нибудь еще - этот метод находится в libNerv.a, который собирается без проблем. Проблемы возникают только тогда, когда libNerv.a связан с приложением iphone!)
Я надеюсь, что кто-то может помочь мне с этой проблемой :)