【问题标题】:multiple definition of `DllMainCRTStartup@12' while building glew on windows with mingw32`DllMainCRTStartup@12' 的多重定义,同时使用 mingw32 在 Windows 上构建 glew
【发布时间】:2016-12-05 00:31:11
【问题描述】:

我关注了这个话题: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-imlib,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 个退出状态

感谢您的帮助。

【问题讨论】:

    标签: c windows gcc mingw glew


    【解决方案1】:

    您需要像这样链接-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 中定义。因此你的问题。

    【讨论】:

    • 如果这是真的,毫无疑问它给出了链接器错误,这非常令人讨厌。 -nostdlib 当然不是一个有效的解决方法,对于在 DLL 中正确初始化 CRT 非常重要。正确的建议肯定是只在 EXE 项目中使用 Glew。这就是它的目的,一种开始使用 OpenGL 的简单方法。
    猜你喜欢
    • 2014-09-10
    • 1970-01-01
    • 2020-10-02
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    相关资源
    最近更新 更多