我正嘗試通過windows API創建OpenGL上下文。 現在一切都很好,但我無法弄清楚如何與正確的庫鏈接以獲得wgl ..函數的訪問權限。對wgl函數的未定義引用
我用MinGW編譯。和一個make文件。 我試圖鏈接: -lmingw32 -mwindows -lgdi32 -lopengl32 沒有運氣來解決這個問題。
我是#include windows.h和gl.h,但都不包含wgl函數? 我錯過了什麼?
以下是我的WM_CREATE事件代碼部分(這是唯一重要的事情)。
case WM_CREATE:
{ PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, //Flags
PFD_TYPE_RGBA, //The kind of framebuffer. RGBA or palette.
32, //Colordepth of the framebuffer.
0, 0, 0, 0, 0, 0,
0,
0,
0,
0, 0, 0, 0,
24, //Number of bits for the depthbuffer
8, //Number of bits for the stencilbuffer
0, //Number of Aux buffers in the framebuffer.
PFD_MAIN_PLANE,
0,
0, 0, 0
};
// Get current handle to device context.
HDC hDc = GetDC(hWnd);
// Generate pixel format.
int wPf = ChoosePixelFormat(hDc, &pfd);
// Set pixel format.
SetPixelFormat(hDc, wPf, &pfd);
// OpenGL context
HGLRC GLc = wglCreateContext(hDc);
// Make it current.
wglMakeCurrent(hDc, GLc);
break;
}
這裏是我的make文件:
CXX = g++
SRC = engine.cpp os.cpp
DST = build/engine.exe
PATHS = -L c:\MinGW\lib -I c:\MinGW\include
FLAGS = -mwindows
LIBS = -lmingw32 -opengl32
$(DST): $(SRC)
$(CXX) -o $(DST) $(FLAGS) $(PATHS) $(SRC) $(LIBS)
傳遞給鏈接器問題的庫的順序。請顯示完整的鏈接器調用。 – datenwolf
我使用我在帖子中寫下的確切順序。 MinGW部分提到。 –
是的,但這只是故事的一半。整個鏈接器的調用很重要;這意味着我們還必須查看將鏈接的目標文件(或直接編譯爲可執行文件)的方式和位置傳遞給源文件的行。 – datenwolf