OpenGL SuperBible 6th edition, заголовочный файл sb6.h отсутствует

Недавно я начал изучать OpenGL и; в свою очередь, начал читать OpenGL SuperBible 6-го издания, в котором используется OpenGL 4.3.

Моя проблема в заголовочном файле sb6.h, потому что в книге было написано, что это заголовочный файл c++, который определяет пространство имен с именем sb6, которое включает объявление класса приложения.

Когда я пытаюсь скомпилировать свою программу, моя С++ IDE (Visual Studio 2010) выдает ошибку о том, что такой заголовочный файл не может быть найден.

Так что, возможно, кто-то из вас слышал об этой проблеме или тоже начал читать эту книгу и знает, как решить эту проблему; если да ответьте пожалуйста.

#include "sb6.h"

//derive my_application from sb6:application

class my_application : public sb6.application
{
public : 

   //Rendering function
   void render(double currentTime){

   //Simply clear the window red
   static const GLfloat red[] = {1.0f , 0.0f , 0.0f , 1.0f};

  glClearBufferfv(GL_COLOR, 0 , red) ; 
}

person Nicholas    schedule 05.11.2013    source источник
comment
Тогда возникает первый вопрос: у вас есть этот файл? Если вы посмотрите на Github исходники книги, они там: github.com/openglsuperbible/sb6code   -  person Bart    schedule 05.11.2013
comment
@ Барт, нет, у меня его нет. скачаю по вашей ссылке   -  person Nicholas    schedule 05.11.2013
comment
Хоть я и начал изучать OpenGL (1.2) с супербиблии, но сейчас мне кажется, что это лучше в качестве справочника, а не туториала. Взгляните также на эту книгу, возможно, вам будет легче учиться.   -  person Shahbaz    schedule 05.11.2013
comment
Я знаком с OpenGL, но этот заголовочный файл меня бесил.   -  person Nicholas    schedule 05.11.2013


Ответы (1)


искомый файл sb6.h находится по адресу: https://github.com/openglsuperbible/sb6code/blob/master/include/sb6.h Вы также можете перемещаться по этому проекту и просматривать остальную часть исходного кода/извлекать любые другие файлы, которые вам нужны. Когда вы копируете их на локальный диск/каталог, обязательно добавьте путь к новому каталогу, содержащему заголовки, к вашему пути включения, а любые библиотеки к пути lib и т. д., иначе вы все равно столкнетесь с той же ошибкой.

Ну, если вы не добавите их прямо в каталог проекта (не рекомендуется, так как вы получите массовое повторение контента во всех ваших проектах gl, лучше разместить их в одном месте и добавить пути). Дайте мне знать, если вам нужен рука с определением путей.

Дополнительно:

Чтобы включить заголовки, библиотеки и т. д., просто сделайте следующее:

Загрузите весь проект sb6, затем сохраните его где-нибудь (например, c:\sb6\). Затем перейдите в Property Pages -> VC++ Directories -> Include Directories и добавьте путь c:\sb6\include\ сюда header  files, тогда вам нужно будет добавить библиотеки через: Property Pages -> VC++ Directories -> Library Directories сюда: lib filesи, наконец, добавить исходный код каталог кода через: Property Pages -> VC++ Directories -> Source Directories здесь: исходные файлы

Чтобы исправить ошибку LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup

Обычно это проблема компоновщика, и чаще всего это происходит из-за выбора неправильного типа проекта (т. е. выбора проекта программы Windows, а не проекта консоли Windows). Это можно исправить, выполнив следующие действия:

Перейдите к Project -> Properties -> Configuration Properties -> Linker -> System и в записи для Subsystem измените его на Console

Здесь показано: Изменить подсистему на консоль

Дайте мне знать, как у вас дела, и я могу расширить, если это необходимо.

person GMasucci    schedule 05.11.2013
comment
Да, мне нужна помощь в связывании файлов заголовков с проектом. - person Nicholas; 05.11.2013
comment
Привет, Николас, только что редактировал пост и обновил захват экрана :) - person GMasucci; 05.11.2013
comment
Хорошо, теперь я получаю эту ошибку C2504: 'sb6': базовый класс не определен - person Nicholas; 06.11.2013
comment
Предыдущую ошибку с неопределенным базовым классом sb6 я исправил. Теперь он сообщает мне об ошибке LNK2019: неразрешенный внешний символ _main, на который ссылается функция ___tmainCRTStartup. Я знаю, что это проблема, связанная с тем, что у меня нет моей основной функции, но, насколько я понимаю, DECLARE_MAIN (my_application); - person Nicholas; 06.11.2013
comment
DECLARE_MAIN(мое_приложение) ; Обозначает функцию main. Поэтому я не знаю, почему появляется эта ошибка. - person Nicholas; 06.11.2013
comment
Привет, я считаю, что эта ошибка возникает, когда вы выбрали неправильный тип проекта: например, если вы создали программу для Windows и кодируете консольное приложение или наоборот. Я добавил раздел о том, как исправить эту ошибку в ответ :) - person GMasucci; 06.11.2013
comment
Да, я пробовал это раньше и не работал. Мой проект также является консольным проектом. Также я попытался сделать это приложением для Windows, и оно тоже не работает. - person Nicholas; 06.11.2013
comment
не могли бы вы опубликовать более подробную информацию об ошибке, и я могу попытаться воссоздать ее? Кроме того, как бы странно это ни звучало, попробуйте очистить и перестроить, вы не поверите, как часто это может помочь. - person GMasucci; 06.11.2013
comment
Хорошо, давайте начнем с самого начала. У меня есть заголовочный файл с кодом, включенным выше. Я сделал ссылку на папку sb6, как вы сказали. Идеально. Мой проект является консольным проектом, и в свойствах расширенного параметра у меня также есть выбранный параметр Console. Я не знаю, как сделать очистку (возможно, это отладка), но когда я ее создаю, возникает ошибка: 1 > ССЫЛКА: ошибка LNK2001: неразрешенный внешний символ _mainCRTStartup 1 > C:\Users\Nico\Desktop\Test1\Debug\ Test1.exe: фатальная ошибка LNK1120: 1 неразрешенный внешний файл - person Nicholas; 06.11.2013
comment
давайте продолжим это обсуждение в чате - person GMasucci; 06.11.2013
comment
Мне нужно будет взглянуть на это сегодня вечером, но оно будет доступно позже (после 18:00 по Гринвичу), и я могу предоставить дополнительную информацию. - person GMasucci; 06.11.2013