链接器找不到现有库

Linker can't find existing library

本文关键字:找不到 链接      更新时间:2023-10-16

我最近正在做一个OpenGL项目,决定改用64位,所以我把编译器改为支持64位的g++4.9.2。我也将其他库更改为64位,但编译器找不到系统提供的库Glu32和OpenGL32。我安装了Windows SDK,它提供了64位的库。奇怪的是,这些也有32后缀。。。不管怎样,可能是为了更容易移植。

我已经通过多种方式将路径C:Program FilesMicrosoft SDKsWindowsv7.1Libx64声明为额外的库目录,包括相对目录、绝对目录和通配符(%ProgramFiles%/…),但它们似乎都不适合链接器:

c:/Program Files (x86)/mingw-w64/i686-4.9.2-win32-sjlj-rt_v3-rev1/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lOpenGL32.Lib
c:/Program Files (x86)/mingw-w64/i686-4.9.2-win32-sjlj-rt_v3-rev1/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: cannot find -lGlU32.Lib

编译指令

g++ -m64 -o dist/Debug/MinGW_64-Windows/engine >>imagine some object files in here<< -Lresource/Glew/lib/Release/x64 -Lresource/SDL/x86_64-w64-mingw32/lib -L"C:Program FilesMicrosoft SDKsWindowsv7.1Libx64" -lSDL2main -lSDL2 -lglew32 -lOpenGL32.Lib -lGlU32.Lib

奇怪的是,这些也有32后缀。。。不管怎样,可能是为了更容易移植。

要保持与使用LoadLibraryGetModuleHandle等函数的程序的源代码兼容性,请保持它们的工作状态,而不必更改这些函数中的字符串。

如果您查看错误,它会告诉您找不到库….lib。注意.lib后缀。现在,如果您查看链接器命令行,您将它们指定为-lOpenGL32.lib-lGLu32.lib,这是错误的。传递给-l参数的参数是没有标准文件名前缀或后缀的库名称。正确的-l参数将是-lopengl32-lglu32