К сожалению, я должен задать очевидный вопрос: является ли freeglut.lib, где он должен быть, и указали ли вы на правый каталог?
Ваша ошибка говорит о зависимостях \ freeglut.obj, но если вы следовали учебнику, freeglut должен находиться в Dependencies \ freeglut. Другая распространенная ошибка в Windows - это использование полного пути к файлу с пробелами (C: .... Мои документы ...), но не полный путь к файлу в кавычках. Этот линкер становится причиной этого.
EDIT: Я предполагаю, что меня отклонили, так как я не заметил более очевидной проблемы, связанной с тем, что ваш линкер ищет freeglut.obj, которого у вас нет. Убедитесь, что вы называете это freeglut.lib.
Концептуально, вот что происходит, и это может помочь вам устранить неполадки: Когда вы пишете файл cpp и скомпилируете его, он превращается в файл obj. Компилятору не нужно все знать. Вы можете объявить функцию, которая возвращает int, и принимает bool в качестве аргумента, и использовать его в вашем коде, и компилятор говорит «хорошо, если вы так говорите».
Возможно, у вашей программы будет несколько файлов cpp и, следовательно, несколько файлов obj. После компиляции файлы obj связаны между собой и образуют ваш исполняемый файл. Если что-то пойдет не так (здесь есть!), Это ошибка компоновщика. Компилятор говорит «хорошо, вы говорите, что используете эту функцию ... где это?»
Вы получили файлы lib. В этом случае они являются статическими библиотеками, по существу, контейнером для пакета obj-файлов, ничем не отличающимся от того, как вы сами написали все функции и классы freeglut и скомпилировали их. Компонент хочет связать их. Для кода, который вы пишете и компилируете, Visual Studio гарантирует, что все попадет в нужную папку и что оно выглядит в нужном месте. Для скомпилированных объектных файлов, идущих откуда-то еще? Он не знает, поэтому вам нужно сказать VS две вещи: в какую папку находятся библиотеки, и каковы имена файлов библиотеки. Тогда компоновщик знает, где искать, и что он ищет.
Где-то вдоль линии вы помещаете файлы в неположенное место или указываете VS неправильное местоположение или неправильные файлы или какую-то комбинацию. ИЛИ вы сделали что-то вроде пробелов в пути к файлу без кавычек. Другой распространенной ошибкой является смешивание разных платформ. x86 (т. е. 32 бит) и объектные файлы x64 различаются, и если ваш компоновщик ищет один тип, он не поймет другого. Ваша загрузка предоставила библиотеки для разных платформ, а VS позволяет вам выбрать целевую платформу. Убедитесь, что все одинаково.
Хорошо, я просмотрел все, что я сделал, и у меня действительно есть компоновщик, и файлы правильные. НО, мне не хватает этого файла «freeglut.sln», который должен дать мне проекты для компиляции, что даст мне новый «freeglut.lib», который будет работать. И, кроме того, я нашел файл онлайн здесь: –
https://github.com/coapp-packages/freeglut –
Но когда я загружаю проект .sln, он говорит, что он несовместим, потому что у меня нет VS '12, поскольку я использую VS'13. Должен ли я отказаться от этого и искать другой способ изучения openGL? –