Не удается заставить библиотеку FreeType работать в Mac OS X Mountain Lion

У меня есть проект OpenGL, который отлично работает/компилируется в Windows.
Я хотел портировать приложение на Mac OS.
Я установил и запустил приложение на Mac, но текст внутри проекта не виден.< br> Поэтому я решил использовать стороннюю библиотеку для рендеринга текста в Mac, я наткнулся на FreeType, который имеет много преимуществ, таких как сглаживание и поддержка UNICODE.

Итак, я загрузил библиотеку на свой Mac, './настроил ее, сделал 'make' и 'make install', как обычно.
Затем в Xcode я устанавливаю пути поиска для каталогов include и library,

/usr/local/include и /usr/local/lib соответственно.

Затем я добавил «другие флаги компоновщика» в Xcode, freetype-configure --libs дал мне следующие флаги-
-L/usr/local/lib - lfreetype -lz -lbz2, я добавил их в Xcode.

Теперь, когда я включаю заголовок freetype, проблем нет, но когда я вызываю любой метод из библиотеки freetype, это дает мне следующую ошибку компоновщика.

Ошибки компоновщика Xcode

После поиска в Google я обнаружил, что мне нужно установить цели сборки соответственно, я сделал это, теперь мое приложение собирается для i386 x86, проблема все еще сохраняется.

Я также пробовал использовать следующие флаги при настройке freetype ./configure CC="gcc -arch i386" CXX="g++ -arch i386", что тоже не помогло.

Я относительно новичок в среде Mac OS X/Unix, ранее у меня был свободный тип, работающий в Windows с VS 2008. Буду очень признателен за любую помощь.


person 2am    schedule 19.09.2013    source источник


Ответы (1)


Какой:

Кажется, у вас есть более одного файла libfreetype.dylib в путях поиска вашей библиотеки.

/master_repository/......../lib содержит один файл, а /usr/local/lib — другой

-lfreetype — это удобный способ указать компоновщику искать файл с именем libfreetype.dylib во всех каталогах, указанных с помощью флагов -L. Поскольку -L/master_repository... предшествует -L/usr/local/lib в списке аргументов компоновщика, компоновщик использует первый найденный экземпляр и пытается связать его.

Исправить:

  • Реорганизация ваших флагов -L таким образом, чтобы -L/usr/local/lib стоял перед другим. Избегайте этого варианта, если можете.

  • Удаление лишнего пути поиска, оставление только релевантного.

  • Явное указание библиотеки вместо удобного -l путем замены -lfreetype полным путем к библиотеке: /usr/local/lib/libfreetype. дилиб

person Juan Borda    schedule 10.12.2013