Я изучаю OpenGL и использую SDL2. Проблема, с которой я сталкиваюсь, заключается в том, что код, который я пишу, не компилируется в C++, но тот же код, похоже, компилируется в C. Я создал небольшую выдержку из программы here.Программа OpenGL компилируется с C, но не с C++
Когда я скомпилировать этот код с помощью GCC компилирует и запускает штраф
$ gcc -o testgl testgl.c `pkg-config --cflags --libs sdl2 gl`
$ ./test
OpenGL version : 4.4.0 NVIDIA 340.58
Но когда я компилирую тот же код, используя г ++
$ g++ -o testgl testgl.c `pkg-config --cflags --libs sdl2 gl`
test.c: In function ‘int main()’:
test.c:14:27: error: ‘glGenVertexArrays’ was not declared in this scope
glGenVertexArrays(1, &vao);
^
test.c:15:23: error: ‘glBindVertexArray’ was not declared in this scope
glBindVertexArray(vao);
^
Хотя это не совсем проблема в говорят, как Я могу просто использовать C вместо C++, но я хочу знать, почему это происходит, и есть ли способ исправить это?
Окружающая среда: Ubuntu 14,04, GCC 4.8, SDL 2
gcc не является компилятором C. это многоязычная утилита компиляции, которая будет вызывать g ++ для расширений .cpp. Итак, в вашем случае, я думаю, проблема может быть проблемой заголовка? gcc может вызывать g ++ с разными флагами, чем ваши – galinette
Я ошибаюсь в своем предыдущем комментарии. Даже если gcc вызывает g ++ для файлов c и C++, для файла .c gcc вызовет g ++ с флагом C, тогда как ваша командная строка для g ++ будет компилироваться с использованием стандарта C++. – galinette