2013-06-06 2 views
1

이 아닙니다. GLFW 및 GLEW를 사용하여 코드를 컴파일 할 때 glewInit()은 glewInit은 정의되어 있지 않지만 glewExperimental은

 undefined reference to '[email protected]'
입니다. 흥미로운 부분은 위의 glewExperimental 토큰에 문제가 없다는 것입니다. (그리고 내가 glewInit()을 컴파일하면 주석을 달았고, 컴파일되고 실행될 것이다.)

glewExperimental을 true로 변경하는 동안 glewInit()이 정의되지 않은 이유는 무엇입니까? 이 문제를 해결하는 방법은 무엇입니까?

내는 MinGW 컴파일러 호출 : 나는 glewInit 전화

 C:\MinGW\bin\c++.exe -x c++ -o "%cd%\aeonsplice.exe" -static "main.cpp" -Wl,glew32.dll,glfw.dll

() : 자세한 정보가 필요하면

 
    glewExperimental = true; // this checks out as fine (I don't have glewExperimental declared anywhere) 
    if (glewInit() != GLEW_OK) // this is where it breaks 
    { 
     fprintf(stderr, "Failed to initialize GLEW, exiting.\n"); 
     aeonAPITerminate(); // This calls glfwTerminate() 
     return false; 
    } 

, 내가 요청하여 편집합니다. 그리고 예, 검색을하고 glewInit()에 대한 20 가지 이상의 질문을 찾았지만, 그 중 아무 것도 내 문제와 일치하지 않았습니다. 와 Mingw 컴파일러

+0

하나가 표시되고 다른 하나가 실제로 왜 중요합니까? 실제 문제를 해결할 수는 없습니다 (예 : 정의되지 않은 외부 문제). –

+0

그렇습니다. glewInit을 포함하고있는 부분이 무엇이든간에 glew의 일부가 제대로 포함되어 있음을 나타냅니다. – Athix

+1

관련 정보이지만 솔루션에는 중요하지 않습니다. – Kevin

답변

2

당신은 glew32s.lib하지 glew32.lib을 연결해야하며 모든 링커의 목록의 첫 번째에 있어야합니다.

+0

어떻게 그렇게 할 수 있습니까? C++. exe 또는 내 소스 코드에서 뭔가를 호출하는 방법을 편집해야합니까? (나는 mingw/libs에 포함하지 않고 glew32.lib을 절대 건드리지 않는다.) – Athix

+0

소스 파일의 맨 위에 "#define GLEW_STATIC"을 정의하고 mingw 컴파일러 링크 glew32s.lib를 glew32.lin이 아니라 호출해야한다. –

+0

#define GLEW_STATIC을 원본 파일의 맨 위에 추가하면 명백한 변화가 없었으며 glew32.lib를 포함시키지 않았습니다. glew32.dll을 포함 시켰습니다 (glew32s.lib 또는 glew32.lib 결과를 파일에 포함 시키려고하지 않는 한 나는 그것을 작업 디렉토리에 추가합니다.이 경우 슬 루우 함수에 대한 정의되지 않은 참조를 던지고, 대부분은 다른 위치에서 반복되는 '_imp_wglGetProcAddress @ 4'입니다. – Athix

관련 문제