c++ - 链接器找不到现有库

标签 c++ c opengl 64-bit glu

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

我已经声明了路径 C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64以多种方式作为附加库目录,相对,绝对和带有通配符(%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\ Files\Microsoft\ SDKs\Windows\v7.1\Lib\x64\" -lSDL2main -lSDL2 -lglew32 -lOpenGL32.Lib -lGlU32.Lib

最佳答案

Strangely these do also have the 32 suffix... whatever, probably for easier porting.

要保持与使用诸如 LoadLibraryGetModuleHandle 等函数的程序的源兼容性:保持它们正常工作,而无需更改进入这些函数的字符串。

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

关于c++ - 链接器找不到现有库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28650102/

相关文章:

C recvfrom 破坏系统日志

c - 为什么使用 4096 个元素作为 char 数组缓冲区?

c++ - 在 VS 2012 项目中使用 libpq (PostgreSQL) 库

c++ - 类中 C++ 运算符重载的语法

c - 打印马里奥二号半金字塔 CS50

c++ - glShaderSource() 上的段错误

opengl - 在不裁剪的情况下缩放 SDL 表面的正确方法?

c++ - 是否可以仅使用 OpenGL 确定默认帧缓冲区的大小?

c++ - 为什么我的代码没有使用类型转换进行编译?

opengl - OpenGL 中两个纹理的幂