如何使用g ++静态链接外部库?

时间:2020-03-30 17:53:05

标签: c++ g++ mingw opengl-3

我正在尝试构建一个程序来测试外部库的使用。 当我尝试构建它时,出现一堆“未定义的引用”错误。

我要用来编译的确切行是:

g++ main.cpp -L"../Dependencies/GLFW" -lglfw3

错误是:

Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
Warning: corrupt .drectve at end of def file
C:\Users\SubSm\AppData\Local\Temp\ccQmEHZX.o:main.cpp:(.text+0x96): undefined reference to `_imp__glClear@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/window.obj):(.text$mn+0xa): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/window.obj):(.text$mn+0x45): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/window.obj):(.text$mn+0x237): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/init.obj):(.text$mn+0xa): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/init.obj):(.text$mn+0x41): undefined reference to `_imp____stdio_common_vsprintf'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/init.obj):(.text$mn+0x32b): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/context.obj):(.text$mn+0x7): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/context.obj):(.text$mn+0x3d0): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/context.obj):(.text$mn+0x405): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/context.obj):(.text$mn+0x44e): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/context.obj):(.text$mn+0x4d6): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/context.obj):(.text$mn+0x508): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/context.obj):(.text$mn+0x54e): more undefined references to `@__security_check_cookie@4' follow
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x7): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x3a): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x143): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x7): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0xa): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x98): undefined reference to `_imp__CreateDIBSection@24'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0xc8): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0xdd): undefined reference to `_imp__CreateBitmap@20'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x100): undefined reference to `_imp__DeleteObject@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x10f): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x1b5): undefined reference to `_imp__DeleteObject@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x1fc): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x7): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x187): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x33c): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x7): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x7a): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x8c): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x7): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x115): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x7): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x6b): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_window.obj):(.text$mn+0x7): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0x49): undefined reference to `_imp__GetDeviceCaps@8'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0xa): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0x2b): undefined reference to `_imp__CreateDCW@16'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0x3b): undefined reference to `_imp__GetDeviceGammaRamp@8'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0x42): undefined reference to `_imp__DeleteDC@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0x91): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0x3b): undefined reference to `_imp__GetDeviceCaps@8'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0xa): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0x77): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0x7): undefined reference to `__security_cookie'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/win32_monitor.obj):(.text$mn+0x7f): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/wgl_context.obj):(.text$mn+0x87): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/wgl_context.obj):(.text$mn+0x13e): undefined reference to `_imp__DescribePixelFormat@16'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/wgl_context.obj):(.text$mn+0x6e0): undefined reference to `_imp__DescribePixelFormat@16'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/wgl_context.obj):(.text$mn+0x814): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/wgl_context.obj):(.text$mn+0x857): undefined reference to `@__security_check_cookie@4'
../Dependencies/GLFW/glfw3.lib(glfw.dir/Release/wgl_context.obj):(.text$mn+0x6c): undefined reference to `_imp__SwapBuffers@4'
collect2.exe: error: ld returned 1 exit status

我正在尝试链接GLFW

1 个答案:

答案 0 :(得分:2)

手册说,您必须链接到更多glfw3

GLFW: Building applications

在Windows上使用MinGW或Visual C ++

GLFW库的静态版本名为glfw3。使用此版本时,还必须链接到GLFW使用的某些库。

使用MinGW将应用程序与GLFW的静态版本链接时,还必须显式与gdi32链接。其他工具链(包括MinGW-w64)将其与其他依赖项(如user32kernel32)一起包含在默认库集中。

GLFW DLL的链接库名为glfw3dll。编译使用GLFW DLL版本的应用程序时,需要在包含所有GLFW标头之前,先定义GLFW_DLL 。可以使用编译器开关或在源代码中定义它来完成此操作。