#visual-studio-2008 #opengl
#visual-studio-2008 #opengl
Вопрос:
Я пытаюсь скомпилировать чужой проект и получаю около 850 ошибок, все они связаны с OpenGL. Я использую Visual Studio 2008 в 64-разрядной версии Windows 7, но проект является проектом Win32.
Как вы можете видеть, приведенные ниже ошибки взяты из gl.h
папки Windows SDK include в разделе Program Files
, а не Program Files (x86)
поэтому я предполагаю, что это часть проблемы. Я попытался добавить каталог .NET 2003 include, который имеет gl.h и находится под Program Files (x86)
, но он все еще пытается использовать версию gl.h под Program Files
.
Кроме того, в проекте используются wxWidgets 2.4.2, и я не могу найти ни одного экземпляра gl.h
, включенного в само решение, поэтому я не уверен, что его использует.
Обновление: По-прежнему не удается скомпилировать это. Фактический проект, который я пытаюсь скомпилировать, — это инструмент «Интерактивный цифровой фотомонтаж» (исходный код по ссылке). Они включают файл проекта VS2003 и инструкции, которым я тщательно следовал. Я даже пробовал создавать в VS2003 и получал те же ошибки. Мне любопытно, есть ли у кого-нибудь возможность попробовать это в своей системе и посмотреть, получают ли они те же ошибки. Требуется установка wxWidgets 2.4.2.
Есть мысли? Я включил пример некоторых ошибок ниже. Спасибо.
1>C:Program FilesMicrosoft SDKsWindowsv6.0A\includeGL/gl.h(1152) : error C2144: syntax error : 'void' should be preceded by ';'
1>C:Program FilesMicrosoft SDKsWindowsv6.0A\includeGL/gl.h(1152) : error C4430: missing type specifier - int assumed. Note: C does not support default-int
1>C:Program FilesMicrosoft SDKsWindowsv6.0A\includeGL/gl.h(1152) : error C2146: syntax error : missing ';' before identifier 'glAccum'
1>C:Program FilesMicrosoft SDKsWindowsv6.0A\includeGL/gl.h(1152) : error C2182: 'APIENTRY' : illegal use of type 'void'
1>C:Program FilesMicrosoft SDKsWindowsv6.0A\includeGL/gl.h(1152) : error C4430: missing type specifier - int assumed. Note: C does not support default-int
1>C:Program FilesMicrosoft SDKsWindowsv6.0A\includeGL/gl.h(1153) : error C2144: syntax error : 'void' should be preceded by ';'
1>C:Program FilesMicrosoft SDKsWindowsv6.0A\includeGL/gl.h(1153) : error C4430: missing type specifier - int assumed. Note: C does not support default-int
1>C:Program FilesMicrosoft SDKsWindowsv6.0A\includeGL/gl.h(1153) : error C2086: 'int WINGDIAPI' : redefinition
Комментарии:
1. Файлы заголовков одинаковы независимо от разрядности (они используются
#if
там, где это необходимо), поэтому не беспокойтесь о загрузке файлов заголовков из 64-разрядного каталога компилятора.
Ответ №1:
вам необходимо включить «windows.h» перед «gl.h»
#include "windows.h"
#include "gl.h"
Комментарии:
1. Я попробовал это, и это ничего не изменило, но я не уверен, что такое «основной» файл для этого проекта, поэтому я не уверен, куда именно я должен его поместить. Проект должен был создать exe-файл с именем
fuse.exe
sofuse.cpp
, который казался логичным местом, но это не сработало, и у этого файла, похоже, нет основной функции. Проект использует wxWidgets для создания своего графического интерфейса, поэтому я предполагаю, что, возможно, точка входа находится в каком-то заголовке wx. Есть мысли? Спасибо.2. Кроме того, при поиске похожих проблем я заметил, что многие ответы сводятся к тому, что кто-то пытается скомпилировать код C как C . Является ли OpenGL C или C ? И как мне изменить способ компиляции моего проекта. На самом деле я нигде не могу найти во всем решении, которое включено в gl.h. Я думаю, что это, вероятно, вызвано wxWidgets, но опять же, не уверен, как.
3. Хорошо, в конце концов, у меня это получилось. Я просто не смог найти ни одного cpp-файла «верхнего уровня», где одно включение windows.h решило бы проблему, поэтому я просмотрел проект и включил его в каждый файл, который выдавал мне эти ошибки, и это остановило их. Сейчас получаю некоторые другие ошибки, но они кажутся несвязанными. Спасибо.