2016-07-30 30 views
3

我跟着這個話題:Building glew on windows with mingw出現了一些問題在這裏:多個定義,同時建立在Windows GLEW與mingw32的

的gcc -shared -Wl,-soname,libglew32.dll輪候冊, - 退房手續,IMPLIB,LIB/libglew32.dll.a -o的lib/glew32.dll的src/glew.o -L/MinGW的/ lib目錄-lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32

我得到這個錯誤:

C:\ MinGW \ dev_lib \ glew-2.0.0> gcc -shared -Wl,-soname,libglew32.dll -Wl, - out-implib,lib/libglew32.dll.a -o lib/glew32。 dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 src/glew.o:glew.c :(。text + 0x28f80):DllMainCRTStartup @ 12的多重定義 c:/ mingw/bin /../ lib/gcc/mingw32/4.9.3 /../ ../../dllcrt2.o:(.text+0x60):首先在這裏定義 collect2.exe:錯誤:ld返回1退出狀態

感謝您的幫助。

回答

6

你需要像這樣與-nostdlib選項鍊接:

gcc -nostdlib -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32 

GLEW定義DllMainCRTStartup這也是在CRT定義。因此你的問題。

+1

如果這是真的,毫無疑問它給出了鏈接器錯誤,這是超出令人難以置信的討厭。 -nostdlib當然不是一個有效的解決方法,對於在DLL中正確初始化CRT非常重要。正確的建議應該只能在EXE項目中使用Glew。這就是它的原因,一種簡單的開始使用OpenGL的方法。 –