Компьютерная графика

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Компьютерная графика » Программирование графики и GPU » Как использовать библиотеки с диска, чтобы линковщик не выдавал ошибок


Как использовать библиотеки с диска, чтобы линковщик не выдавал ошибок

Сообщений 1 страница 13 из 13

1

Здравствуйте,пишу о проблеме,которая уже изрядно доконала.
Дело в том, что ряд кодов, описанных в книгах(Расширения OpenGL, Разработка шейдеров) у меня не линкуются. Добавляю .h-ы и cpp-шники с диска,прилагаемого к книге, в папку с проектом, добавляю их в проект, а при компиляции вылезают 30 ошибок типа:

Error 14 error LNK2019: unresolved external symbol _jpeg_finish_decompress referenced in function "public: virtual class Texture * __thiscall JpegLoader::load(class Data *)" (?load@JpegLoader@@UAEPAVTexture@@PAVData@@@Z) JpegLoader.obj

Как я понял, косяки именно с библиотеками, которые написал Алексей Боресков, видимо,я неверно их добавляю.
Это в элементарной проге по мультитекстуированию. В общем, если кто-то встречался и решил данную проблему, подскажите, пожалуйста. Если ответит Алексей, то будет вообще замечательно)

0

2

Нужно подключить библиотеки - libTexture/zlib/zlib.lib, libTexture/libpng/libpng.lib, libTexture/jpeg/libjpeg.lib

0

3

Да,меня озарило,и я это уже сделал в свойствах проекта) Появилась другая проблема:насколько я помню,Вы писали,что пишете на VS6, у меня VS8, сейчас линковщик ругается на то,что не может открыть библиотеку LIBC.lib. В инете я вычитал,что по каким-то соображениям из VS8 ее убрали. Если скачать ее с инета, то появляются ошибки переопределения ряда функций,то есть они описаны в уже в другой библиотеке.
В общем, я на пути к установке VS6, позже напишу, как продвигается. Спасибо,что ответили,и если будет время, напишите свои соображения о том, как написать эти проекты под VS8. Заранее,спасибо!

0

4

Поставил VS6, заново создал проект, закинул все библиотеки, прописал в свойствах, но и тут появились проблемы. Компилятор выдает fatal error C1001: INTERNAL COMPILER ERROR.
Даже не знаю, чего делать.

0

5

Все отлично работает и под последней VS - просто нужно посатвить правильные /NODEFAULTLIB
Я обычно все собираю через makefile'ы - если скачать framework  с сайта там есть как раз флаги для послденей VS (нужно смотреть файлы nmake.inc, nmake.rules)
А для VS6 - нужен просто service pack от M$, он исправляет эту ошибку

0

6

Должен признаться, что содержимое nmake файлов для меня не совсем понятно, не знаю,как использовать это(флаги) при сборке проекта.
Эти самые /NODEFAULTLIB забиваются в additional dependencies? Что вы понимаете под "правильными"?

В общем,на данный момент, я пометил LIBC.lib как Ignore Specific Library и линковщик выдает всего две ошибки(по сравнению с 30 до этого):

Error 1 error LNK2019: unresolved external symbol __iob referenced in function _png_handle_gAMA c:\Users\II\Documents\Visual Studio 2005\Projects\MultiTex\MultiTex\libpng.lib

Error 2 fatal error LNK1120: 1 unresolved externals C:\Users\II\Documents\Visual Studio 2005\Projects\MultiTex\Debug\MultiTex.exe

0

7

Там просто указано какие библиотеки нужно подключать, какие стандартные не нужно
Если у Вас компилятор доступен из командной строки, то попробуйте из каталога примера выполнить команду
nmake -f Makefile.nmake

0

8

Ага, здесь разобрался, не стал с консолью заморачиваться, настроил свойства проекта в соответствии с make-файлом. Старые ошибки исчезли, теперь пишет:

Error 1 fatal error LNK1181: cannot open input file 'Studio.obj' MultiTex

У меня в проекте вообще нигде Studio.obj нет,откуда он его взял??

0

9

В консоли nmake прошла...только что потом произойти должно?
Обновил Service Pack на VS6, проект скомпилировался, а при запуске выдает:
точка входа в процедуру _except_handler4_common не найдена в библиотеке DLL msvcrt.dll
это уже издевательство какое-то.

Отредактировано Matthew (2011-05-19 22:24:19)

0

10

Дальше больше.
Ошибка "точка входа в процедуру _except_handler4_common не найдена в библиотеке DLL msvcrt.dll" была,когда я писал на VS6 под XP. Я переконвертировал этот проект на VS2010 в Seven(вдруг повезет). Отчасти повезло. Компиляция и линковка прошли. А вот в консоли теперь :

GLUT: Fatal Error in C:\Users\╚уюЁ№\Desktop\MT\.\Debug\MT.exe: pixel for
mat with necessary capabilities not found.

0

11

Вот какую строку с опциями линковки я использую
DEBUG_LINK_FLAGS    = /DEBUG /DEBUGTYPE:CV /NODEFAULTLIB:libc.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcprt.lib libcmt.lib

Для компиляции флаги
/EHsc /Zi /MT -DWIN32 -D_CRT_SECURE_NO_DEPRECATE

Ошибка GLUT'а очень странная - попробуйте отключиь Aero, хотя у меня и с ним все работает
Можно попробовать вместо glut использовать freeglut

А мои exe-ки у Вас работают ?

0

12

Да дело в том, что этого exe на диске даже нет.Код из первой главы, в ней описывается простой пример наложения дух текстур, видимо, вы его посчитали избыточным для записи на диск, не знаю. А вообще с имеющимися exe были проблемы,раз на раз не приходилось,конечно,но для своей курсовой мне пришлось переписать библиотеки.В курсовой я создаю модель и применяю на ней разные шейдеры,однако с текстурами еще тогда проблема была.Все необходимые расширения поддерживаются(уж прога проверки расширений работает)))
Про эту ошибку glut я вычитал,что возможно! это из-за версии OpenGL, пишут что нужна 1.1.
Все еще остался вопрос, что такое Studio.obj и поясните,пожалуйста, куда именно писать эту строку для линковки и компиляции,т.к в VS6 я нашел, куда это вставить,а в VS8 во вкладке Linker->CommandLine эта строчка автоматически генерируется,но вставить туда я ничего не могу.Внизу есть поле для ввода Additional options, я туда скопировал "DEBUG_LINK_FLAGS    = /DEBUG /DEBUGTYPE:CV /NODEFAULTLIB:libc.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcprt.lib libcmt.lib /EHsc /Zi /MT -DWIN32 -D_CRT_SECURE_NO_DEPRECATE", но,как и стоило ожидать,это не помогло.По прежнему хочет Studio.obj.
Вот,как выглядит строка в CommandLine:

/OUT:"C:\Users\Игорь\Documents\Visual Studio 2005\Projects\MultiTex\Debug\MultiTex.exe" /INCREMENTAL /NOLOGO /MANIFEST /MANIFESTFILE:"Debug\MultiTex.exe.intermediate.manifest" /NODEFAULTLIB:"LIBC.lib msvcrt.lib msvcprt.lib libcmt.lib /DEBUG /PDB:"c:\Users\Игорь\Documents\Visual Studio 2005\Projects\MultiTex\debug\MultiTex.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86 /ERRORREPORT:PROMPT "opengl32.lib glu32.lib glut32.lib libjpeg.lib libpng.lib zlib.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
Как видите, /NODEFAULTLIB'ы там прописаны

Хмм,вот для примера скомпилировал Ваш код glass из 16й главы.Прописал пути к текстурам.Сначала ругнулся на libc,я его в игноры прописал,скомпилировался.Запускаю,все нормально, появилось окно glut, модель чайника.Единственный момент-это тот,что сложно полученный эффект стеклом назвать,но тем не менее,уже что-то.

Я просто не могу понять...у меня единственного такие проблемы,наверное.И ведь дело не в версии VS и даже не в ОС

Отредактировано Matthew (2011-05-20 09:59:13)

0

13

Фак ееее!!Алексей,я взял Ваш проект glass и вставил в него код для мультитекстуирования из framework. Заработало!)
К сожалению,вопрос остался вопросом,в чем было дело,не ясно.Но надеюсь,что потихоньку пойдет,буду заниматься копипастом.

0


Вы здесь » Компьютерная графика » Программирование графики и GPU » Как использовать библиотеки с диска, чтобы линковщик не выдавал ошибок


создать форум