【问题标题】:Linker can't find existing library链接器找不到现有库
【发布时间】:2015-02-21 19:10:09
【问题描述】:

我最近在做一个 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

【问题讨论】:

    标签: c++ c opengl 64-bit glu


    【解决方案1】:

    奇怪的是,这些也有 32 后缀...随便,可能是为了更容易移植。

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

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

    【讨论】:

    • 奇怪的是,netbeans 没有切断 .lib 后缀,因为“L”是大写的。简单的重命名帮助,再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2014-11-24
    • 2012-10-31
    相关资源
    最近更新 更多