2012-05-17 3 views
7

Я пытаюсь использовать библиотеку, в частности SOIL (Simple OpenGL Image Library) в Xcode 4.2.1. В разделе «Фазы сборки» -> Библиотека ссылок с библиотеками. Я добавляю все файлы .h и .c, которые поставляются с архивом ZIP.Включая заголовки в проект Xcode 4.2.1

Когда я построить проект, я получаю следующее сообщение об ошибке для каждого .h и .c файл добавил:

warning: skipping file '/Users/saw/XcodeProjects/Assignment01 copy/Assignment01/image_DXT.c' (unexpected file type 'sourcecode.c.c' in Frameworks & Libraries build phase)

и ошибка линкера:

"_SOIL_load_OGL_texture", referenced from: Init() in main.o Symbol(s) not found for architecture x86_64 Clang: error: linker command failed with exit code 1 (use -v to see invocation)

ответ

9

.h и .c файлы не являются библиотеками. Добавьте файлы .c к фазе компиляции и только #import .h файлы, где это необходимо.

Для проверки ссылок я сделал следующее:

  • Создайте новое приложение Mac какао.
  • Добавить 10 файлов из папки ПОЧВЫ src : SOIL.c, image_DXT.h, stbi_DDS_aug.h, SOIL.h, image_helper.c, stb_image_aug.c, stbi_DDS_aug_c.h, image_DXT.c, image_helper.h, и stb_image_aug.h.
  • Сообщите Xcode, чтобы скопировать их в мой проект.
  • Добавить одну строку в мой делегат приложения applicationDidFinishLaunching: метод: SOIL_load_OGL_texture("img_test.png", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, 0);.
  • Постройте цель для бега.

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

+0

Я добавил файлы в правильный путь, в отличие от @Terribad кажется. Ошибка все еще остается –

+0

Я предполагаю, что вы имеете в виду ошибку компоновщика, а не сообщение «пропустить файл»? Вы можете найти 'SOIL_load_OGL_texture', определенный внутри одного из файлов, которые строятся (например, SOIL.c)? –

+0

+1 Работал как шарм. Спасибо Филиппу. – welbornio

1

Попробуйте добавить -framework к имени вашего фреймворка в «Другие флаги компоновщика», такие как:

-framework SOIL