使用 mingw32 在 windows 上构建 glew 时对“DllMainCRTStartup@12”的多重定义

multiple definition of `DllMainCRTStartup@12' while building glew on windows with mingw32

我关注了这个主题:Building glew on windows with mingw 但这里出了点问题:

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

我收到这个错误:

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 个退出状态

感谢您的帮助。

您需要 link 使用 -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 定义了 CRT 中也定义的 DllMainCRTStartup。因此你的问题。