Скажу сразу у меня Windows. Я пытаюсь откомпилировать файл main.cpp, в котором подключается
#include <nvModel.h>
И в функции main просто return 0.
nvModel.h и есть та библиотека которую мне нужно подключить. файл находится за пределаи компилятора и я написал такой вот makefile:
CC = g++ EXE = nvTest DIR1 = -I"C:\Program Files (x86)\NVIDIA Corporation\NVIDIA OpenGL SDK 10\common\include" DIR2 = -I"C:\Program Files (x86)\NVIDIA Corporation\NVIDIA OpenGL SDK 10\common\GLEW\include" DIR3 = -I"C:\Program Files (x86)\NVIDIA Corporation\NVIDIA OpenGL SDK 10\common\nvModel\include" DIR4 = -I"C:\Program Files (x86)\NVIDIA Corporation\NVIDIA OpenGL SDK 10\common\nvWidgets\include" DIR5 = -I"C:\Program Files (x86)\NVIDIA Corporation\NVIDIA OpenGL SDK 10\common\nvImage\include" DIR6 = -I"C:\Program Files (x86)\NVIDIA Corporation\NVIDIA OpenGL SDK 10\common\nvGUI\include" LDFLAGS = -L"C:/Program Files (x86)/NVIDIA Corporation/NVIDIA OpenGL SDK 10/common/nvModel/lib" LIBS = -lnvModel INCLUDE += $(DIR1) INCLUDE += $( DIR2) INCLUDE += $( DIR3) INCLUDE += $( DIR4) INCLUDE += $( DIR5) INCLUDE += $( DIR6) all: $( CC) main.cpp $( LDFLAGS) $( LIBS) -o $( EXE) $( INCLUDE)
сам nvModel.h подключает ещё и файлы которые находятся за пределами его папки.
Сам nvModel.h в папке C:\Program Files (x86)\NVIDIA Corporation\NVIDIA OpenGL SDK 10\common\nvModel\include
А в его коде есть
#include <nvMath.h>
А файл nvMath.h в папке C:\Program Files (x86)\NVIDIA Corporation\NVIDIA OpenGL SDK 10\common\include
Так же есть файлы nvModel.dll,nvModel.lib И Source файлы .cpp.
Я их не включил в makefile, решил попытать счастье с .lib Но не вышло.
Компилятор говорит что в файлах NVIDIA куча ошибок. Вот я их вывел в log файл:
http://yadi.sk/d/0JMHyPEh59nl2
Я довольно плохо знаком с makefile, из IDE использую Code::Blocks. ОС Win7.
Вообще в последнее время vim и g++, без IDE.
Помогите пожалуйста, очень хочу понять что не так делаю.
Nawy
> Скажу сразу у меня Windows.
> ...
> Вообще в последнее время vim и g++, без IDE.
> Помогите пожалуйста, очень хочу понять что не так делаю.
Всё :(
Я считаю, ты пошел немного по неправильному пути. Даже в самом OpenGL SDK находятся проекты Visual Studio, почему бы не использовать ее? Тем более есть бесплатные Express версии. Поверь, все будет лишь проще. И если не секрет, почему именно OpenGL?
> d3dx9_37
> почему именно OpenGL?
:) говорящий ник для такого вопроса.
Судя по vim и gcc человека не только винда интересует.
ASD
> Всё :(
Не соглашусь. Может VIM не очень и подходит для Windows, но он простой и легкий.
d3dx9_37
Да вообще сложно не согласиться, что для Windows лучше VS использовать, но после написания программы на VS она станет 100% не переносимой на другие платформы, придётся писать все заново.(сам я пишу на Qt и GTK+, обычно по настроению). Ещё одна проблема почему я не использую VS, это её ужасная, просто ужаснейшая MFC... и честно говоря писать на WinAPI тоже не очень, в учет её сложности, размера кода и опять же непереносимости. И лично моё мнение VS напоминает Delphi или C#, громоздкий, гадкий и противный, не люблю я все эти проектища. OpenGL выбрал потому что она кросплатформенная, быстрая, логичная, IMHO лучший реал-тайм, просто скачиваем пару файлов и работаем. А вообще это вопрос религии) Не считаю что Direct3D чем то хуже, даже лучше потому что есть DirectX, в который входят либы звуков рисовалки и куча куча всего. Но опять же я такого не преверженец, я люблю выбирать. Допустим нужна библиотека звука, я допустим выбираю OpenAL или BASS(эх если бы она была бесплатной). И так далее.
Роман Шувалов
> Судя по vim и gcc человека не только винда интересует.
Да ты прав. Обожаю Linux. У меня Debian, была Федора, щас вот с FreeBSD работаю, тестирую там язык Go.
Да проект VS смотрел, мало что понял. Ясно что они шаманят и с source файлами и с .dll и с .lib Как мне это в makefile впихнуть не представляю. Оочень хотел посмотреть как прицепляет библиотеки Code::BLocks, а он походу свои makefile подчишает.
d3dx9_37
Ммм, хотел вот ещё спросить, вот 2 файла
nvModel.vcproj - Visual Studio Project
nvModel.sln - sln что это?
VCCLCompilerTool, VCLinkerTool,VCMIDLTool все разбито на файлы? Нет единого компилятора?
Но все же подскажите как правильно подключить библиотеки, если кто знает пишите пожалуйста.
Я просто не понимаю в чем ошибка. У меня такая логика:
1. Подключаем пути до include
2. Прицепляем архив с обьектными файлами .lib
Все? Что ещё нужно для подключения библиотеки? в .lib находятся обьектные source файлы, в include хедеры. Что ещё то нужно?
Nawy
Кто тебе мешает скомпилить эти длл как тебе надо и под что надо?
> sln что это?
Solution, у тебя может быть один солюшен и в нём несколько проектов.
Своего рода набор проектов.
Executor
Вот я и спрашиваю как? Как их и куда вписать в makefile? Я просто не понимаю.
Nawy
Погугли. Makefile for dll.
Executor
Тоесть нужно просто прицепить за место .lib , .dll или откомпилировать из .lib в .dll? Так в исходниках уже есть .dll
Nawy
> Да вообще сложно не согласиться, что для Windows лучше VS использовать, но
> после написания программы на VS она станет 100% не переносимой на другие
> платформы, придётся писать все заново.
Можно компиляторозависимый код обернуть в define.
#if defined(_MSC_VER) #endif
Ну и makefile тоже можно выполнять команда nmake, через командную строку запускать.
Nawy
> но после написания программы на VS она станет 100% не переносимой на другие
> платформы
это не правда
Anika
Pushkoff
Хорошо, хорошо, но все равно я не люблю его) Каким бы он хорошим не был. Я люблю знать и видеть что и как происходит, а когда все делает IDE+Framework мне сложно им доверять. Ну и вообще САМЫЙ главный и большой минус VS, это огромный размер скачиваемого IDE, долгая установка, все это громоздко и не прочно. IMHO Не сердчайте на меня VS`ники, ещё раз повторюсь это вопрос религии)
Вот лучше бы помогли в моём вопросе, целый день гуглю и ишю в чем ошибка в моём makefile. Нашёл программу Make-It-So но она выдала ошибку по выполнению, нашёл ещё и sln2mak, тоже ошибка синтаксиса( эти две программки конвертируют из .sln в makefile). Не пойму в чем проблема. Как подключить либы? Фанаты VS не знают?
Nawy
> Я люблю знать и видеть что и как происходит
да там все известно и видно
Nawy
> Ну и вообще САМЫЙ главный и большой минус VS, это огромный размер скачиваемого
> IDE
800Мб вместе с WindowsSDK, но все будет работать из коробки без лишних настроек
Nawy
> Фанаты VS не знают?
судя по логу, у тебя не компилится, и мейкфайл тут не при чем.
возможно библиотека была написана для старых версий компилятора.
Pushkoff
хм, тоесть ты считаешь что makefile написан верно? Да в какой то мере ты прав потому что компилятор новый, а либо 2010 года.
Ну и кстати VS платный. Есть и бесплатные типа Express, но если говорить прямо он хоть на что то пригоден? Не говоря уже о серьёзных проектах.
Платные VS Professional, почему они платные по твоему? Microsoft вечно что то навязывает, а когда сам выбираешь, это уже другой вопрос.
MDS
ммм, понятно. Врать не буду, но скажу где то читал что он не умеет работать с базами данных и не может работать с сетью, но не уверен.
Под серьёзными программами понимаю программы допустим скоростные системы. Для которых компилятор msvc не может скомпилировать хорошо оптимизированный код как gcc.
Для сетей может vs и не нужно, но опять же сидеть и просто писать всякие системы расчетов и подсчётов коров в колхозе, или опять же, я слышал на конференциях стартаповцев:
-Одна девушка предлагала программу для рыбофермы, считать икринки и другую чепуху.
-Другой парень предлагал программу для составления расписания в универе
-И ещё кто то толкал идею электронного журнала.
И все это было написано на VS. Более серьёзного я не видел. Сами мелкософты работают без использования VS.
Для меня это не серьёзные проекты. А вот допустим вот что на ум приходит: Microsoft Office, Chrom, Unreal Engine, Adobe Photoshop, CryEngine и другие.
А вообще собственно что даёт VS? И чем отличается от Qt или Juce? Да только взаимодействием с пользователем и алгоритмами построения окон. Остальное идентично, ибо c++ это стандарт.
Ммм... и такой вопрос, во время web установки VS Express, что происходит? Она распакует свои файлы в папку, пропишет в path свой компилятор, а что ещё?
Тема в архиве.