Я хочу использовать компилятор cygwin32 вместо mingw32.Согласно http://web.eecs.umich.edu/~sugih/courses/eecs487/glut-howto/glfw/, GLX-программы gl на cygwin не работают с glfw.Поэтому я попытался использовать двоичные файлы mingw32 из glfw3 в cygwin32, что приводило к ошибкам, таким как GL_ARRAY_BUFFER не было объявлено в этой области.Я решил это, связавшись с двоичными файлами mingw32 glew32, которые дали
/ usr / include / w32api / GL / glu.h: 68: 79: ошибка: ожидается ')' перед '*' токеном
, который я решил двумя разными способами, вместо этого используя glew, установленный cygwin, или связывая его с glew32s и вставляя
#ifndef CALLBACK
#if defined(_ARM_)
#define CALLBACK
#else
#define CALLBACK __stdcall
#endif
#endif
#define GLEW_STATIC
Если бы я использовал glew32 вместо glew32s, он сказал бы неопределенную ссылку на 'glewInit', что мне нужно, чтобы остановить segfault прямо перед glCreateShader и после glfwMakeContextCurrent.Но этот метод дал предупреждение: разрешение _glewInit путем ссылки на _glewInit@0.
После всего этого у меня появилось много ошибок, таких как неопределенная ссылка на 'glGenTextures' или 'glDrawElements', которые я мог решить, только связавдля cygwin's gl, который, я думаю, смешивает GLX с WGL.Согласно glewInit () завершается с ошибкой «Отсутствует версия GL», контекст SDL2 OpenGL, компилятор cygwin , я должен просто переключиться на компилятор mingw32, который у меня уже работает, но я действительно хочу использовать cygwin.
Если я использую cygwin's gl (-lGL) с glew32s, он компилирует, запускает и сбоит с помощью стека-дампа в моем glGenBuffers (1, & ibo);в моем модельном классе без glewinit (), выдавая какие-либо ошибки.
model(vectx* vecticesd, unsigned int* indicesd,int vectsized,int indsized,GLuint texidd) :
vecticesarr(vecticesd), indicesarr(indicesd),texid(texidd),vectsize(vectsized),indsize(indsized){
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, vectsized, vecticesarr, GL_STATIC_DRAW);
glGenBuffers(1, &ibo); //here it crashes
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indsized, indicesd, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
}
Если я использую вместо этого cygwin glew, glewinit () возвращает ошибку «Missing GL version».glfwMakeContextCurrent (окно);называется ДО glewinit () ;.Вот мои компоновщики и их удвоение, так что порядок не имеет значения, ничего не изменилось.
-lglfw3 -lglew32s -lopengl32 -lgdi32 -lGL
Я попробовал двоичные файлы mingw64 с помощью cygwin64, и он выдал «___vsnprintf not found» и -lntdll didn 'не могу это исправить.
- добавил больше информации -
Я новичок в программировании, поэтому, пожалуйста, прости меня, если я скажу что-нибудь действительно глупое.Для теста используйте код в https://www.glfw.org/docs/3.0/quick.html.Я получаю черное окно с настройкой сборки cygwin32 и вращающимся треугольником с настройкой сборки mingw32.Я использую возвышенный текст на окнах, если это имеет значение.Могу ли я использовать предварительно скомпилированные двоичные файлы для загрузки mingw32 с веб-сайта glfw, или я должен использовать cmake с cygwin?Когда я попробовал cmake с помощью cygwin, добавив cygwin / bin в путь к системной переменной среды, он сказал: «Использование Win32 для создания окон», и оба окна cygwin / bin / make.exe и gnu make сказали
[16%] Связывание исполняемого файла C boing.exe ../src/glfw3.lib(win32_monitor.c.obj):win32_monitor.c:(.text+0x77): неопределенная ссылка на `_imp__CreateDCW @ 16 '... больше ошибок
Если я зашел в cmakelist.txt в исходном коде glfw и заставил его использовать X11, он сказал: «Использование X11 для создания окна», а затем заставил X11 / extensions / xf86vmode.h отсутствовать и не былопакет для него в файле setup-x86.exe для cygwin.Я мог бы сделать что-то очень не так с Cmake, но я не знаю.Я смог создать, сделать и выполнить установку с помощью mingw32 в качестве собственного компилятора в пути к системной переменной среды.