Салют!
Не подскажите, с какого перепуга у меня не собирается DevIL?
либы, dll, хидеры пихал куда только возможно, все бесполезно...
Работаю в Visual Studio 2010, собирал так:
Нашел на С в соответствующей папке Microsoft< Что-т или ничего, не помню>SDKs, там в папку Headers закинул IL\il.h, в папку Lib закинул соответствующие библиотеки из DevIL SDK, dll в папку с exe'шником...
После того, ка не получилось пихал эти файлы куда только можно было(что могло сработать, по-моему разумению)...
Пищет: Неразрешеный символ _impl_Init<и т.п.>
Что делать, уже все достало, хоть сам пиши библиотеку для чтения нужных форматов...
наверное, проблема в том, что кидать надо не
> куда только можно
а туда, куда нужно. можно в студии в tools->options->projects and solutions->vc++ directories->include files указать путь к хедерам, куда установлен девил. соответственно указать путь к либам, либо #pragma comment(lib, "DevIl.lib") их.
> Не подскажите, с какого перепуга у меня не собирается DevIL?
и советую определиться, у тебя не собирается сам девил или приложение, которое его использует? скорее всего, второе, это совершенно разные вещи.
> Что делать
телепаты в отпуске. если у тебя что-то не получается, никто не сможет за тебя определить, ошибка это компиляции, линковки, версии библиотеки или ещё чего-то, если ты даже не выкладываешь лог компиляции.
Проблемы в том, что линкеру на хватает библиотек.
Лучше кинь их в некоторую папку, а потом укажи в свойствах проекта дополнительный каталог поиска библиотек, и напиши вверху исходника #pragma comment(lib, "ИмяФайла.lib") для каждого .lib
(или укажи их в доп. зависимостях)
Я же написал, что начал
куда только можно
кидать после того, как он перестал их обнаруживать(точнее, и не начинал), в SDCs(там у меня лежит OpenGL, и все нормально, к слову сказать)
Попытка указать нужные директории включения и библиотек не помогла.
скорее всего, второе
Нет, второе совершенно не причем, приложение работает.
Окей, вот лог и кусок кода, отвечающий за DevIL(за исключение #include)
1> Для всех выходных данных обновления не требуется. 1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__ilGetData@0 в функции "void __cdecl Init(void)" (?Init@@YAXXZ) 1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__ilGetInteger@4 в функции "void __cdecl Init(void)" ( ?Init@@YAXXZ) 1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__ilLoad@8 в функции "void __cdecl Init(void)" ( ?Init@@YAXXZ) 1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__ilInit@0 в функции "void __cdecl Init(void)" ( ?Init@@YAXXZ) 1>D:\С++\OpenGL Examples\ПроЭкт\Debug\task3.1.exe : fatal error LNK1120: 4 неразрешенных внешних элементов
ilInit(); //Загрузка файла cоответствующего типа //В данном случае png Hero = new AUX_RGBImageRec; ilLoad(IL_PNG, (const ILstring)"hero.png"); //Ширина изображения Hero->sizeX = ilGetInteger(IL_IMAGE_WIDTH); //Выота изображения Hero->sizeY = ilGetInteger(IL_IMAGE_HEIGHT); //Число байт на пиксель int bpp = ilGetInteger(IL_IMAGE_BYTES_PER_PIXEL); //Размер памяти int size = Hero->sizeX * Hero->sizeY * bpp; //Память под массив Hero->data = new unsigned char[size]; //Получение растровых данных unsigned char *copyData = ilGetData(); //Копирование растровых данных memcpy(Hero->data, copyData, size); //Тип хранения данных
Код взял просто из примера.
Спасибо за внимание.
ЗЫ
Кстати, хедеры и библиотеки лежат и в папке с проектом, думал, может это поможет...
monolit
> Нет, второе совершенно не причем, приложение работает.
Собрать DevIL это сделать собрать его DevIL.lib, если ты DevIL.lib не компилишь, значит ты его не собираешь, ты его не прилинковал к проекту, как ты уже понял.
И снова monkey in action.
Ты уже прописал в настройках проекта Linker->Input->Additional Dependecies нужные библиотеки, полагаю? И ошибок при сборке не возникает из-за того, что студия не нашла библиотеки?
eXmire
совершенно верно, прописал и папку к библиотекам, и саму библиотеку. Эффект нулевой...Опять же, у меня там еще прописаны OpenGL библиотеки, они работают...
А зачем нужен DevIL?
Если для png или jpg, можно использовать libpng и libjpeg.
monolit
Скидывай свой минимальный проект с проблемой. Правда, у меня 11-я студия, но не думаю, что это критично.
nes
> А зачем нужен DevIL?
Чтобы посмотреть на пример хреновой инженерной мысли.
nes
> можно использовать libpng и libjpeg.
мне он почему то не очень понравился...Непонятно)
Вот проЭкт, вроде весь...
Либы находятся в папке Microsoft SDKs /7.0/Lib
хидеры там же, в соответствующей папке Header
ЗЫ
Те файлы я тож скинул
У меня все собралось. Вправляй руки, дружище.
В проекте твоем поудалял лишние пути и прагмы. Вставил пути, по которым файлы лежат у меня. Все.
eXmire
Значит студия все таки...
Ибо только DevIL этот не работает..Печалька..
Ладно, спасибо...
monolit
> Значит студия все таки...
Студия тут не при чем, я гарантирую. Ты от незнания мог всунуть вместо одной версии библиотек другую или еще что.
По-моему, все таки причем.Он а сошла с ума, и теперь не компилирует новый проэкт даже с OpenGL(Точнее, компилирует, но ей очень сильно не нравится файл gl.h, забраковала буквально каждую строчку, видите ли, ей там не хватает ";"(буквально везде).
Но старые проекты перекомпилирутся нормально, хоть подключено ТОЖЕ САМОЕ)
ЗЫ
Конечно же, в том самом файле гл.х я ничего не менял...
Ни одного комментария про крестопроблемы? Куда катится геймдев?
Тема в архиве.
Тема закрыта.