OpenGL을 배우고 SDL2를 사용하고 있습니다. 내가 직면 한 문제는 내가 쓰는 코드가 C++로 컴파일되지 않지만 같은 코드가 C로 잘 컴파일 된 것 같다. 나는 프로그램 here의 작은 발췌 부분을 만들었다.OpenGL 프로그램은 C로 컴파일되지만 C++로는 컴파일되지 않습니다.
나는 컴파일하고 잘
$ gcc -o testgl testgl.c `pkg-config --cflags --libs sdl2 gl`
$ ./test
OpenGL version : 4.4.0 NVIDIA 340.58
를 실행하지만 동일한 코드를 컴파일 할 때이 말에 따라 정확하게 문제로 아니지만 g ++
$ 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);
^
를 사용하여 GCC를 사용하여이 코드를 컴파일 할 때 C++ 대신 C를 간단하게 사용할 수는 있지만, 왜 이런 일이 일어나고 이것을 해결할 수있는 방법이 있는지 알고 싶습니다.
환경 : 우분투 14.04, GCC 4.8, SDL 2
gcc는 C 컴파일러가 아닙니다. 이것은 .cpp 확장자에 대해 g ++을 호출하는 다중 언어 컴파일 유틸리티입니다. 그래서 귀하의 경우, 문제가 헤더 문제 일 수 있다고 생각합니까? gcc가 당신의 플래그와 다른 플래그로 g ++를 호출했을 수도 있습니다. – galinette
이전 주석에 잘못되었습니다. gcc가 g ++을 c 및 C++ 파일 모두에 대해 호출하더라도 .c 파일에 대해 gcc는 g ++에 C 플래그를 지정하고 g ++ 용 명령 줄은 C++ 표준에 대해 컴파일합니다. – galinette