链接器找不到现有库
Linker can't find existing library
我最近在做一个 OpenGL 项目并决定迁移到 64 位,所以我将编译器更改为支持 64 位的 g++ 4.9.2。我把其他的库也改成了64位的,但是只有系统提供的库,Glu32和OpenGL32,编译器找不到。我安装了提供 64 位库的 Windows SDK。奇怪的是,这些也有 32 后缀......不管怎样,可能是为了更容易移植。
我已经通过多种方式将路径 C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64
声明为附加库目录,相对的、绝对的和使用通配符 (%ProgramFiles%/...),但其中 none 似乎适合链接器:
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.
为了保持与使用 LoadLibrary
或 GetModuleHandle
等函数的程序的源兼容性:让它们正常工作,而不必更改进入这些函数的字符串。
如果您查看错误,它会告诉您找不到库 ….lib
。注意 .lib
后缀。现在,如果您查看链接器命令行,您将它们指定为 -lOpenGL32.lib
和 -lGLu32.lib
,这是错误的。传递给 -l
参数的参数是没有标准文件名前缀或后缀的库名称。正确的 -l
参数应该是 -lopengl32
和 -lglu32
.
我最近在做一个 OpenGL 项目并决定迁移到 64 位,所以我将编译器更改为支持 64 位的 g++ 4.9.2。我把其他的库也改成了64位的,但是只有系统提供的库,Glu32和OpenGL32,编译器找不到。我安装了提供 64 位库的 Windows SDK。奇怪的是,这些也有 32 后缀......不管怎样,可能是为了更容易移植。
我已经通过多种方式将路径 C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64
声明为附加库目录,相对的、绝对的和使用通配符 (%ProgramFiles%/...),但其中 none 似乎适合链接器:
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.
为了保持与使用 LoadLibrary
或 GetModuleHandle
等函数的程序的源兼容性:让它们正常工作,而不必更改进入这些函数的字符串。
如果您查看错误,它会告诉您找不到库 ….lib
。注意 .lib
后缀。现在,如果您查看链接器命令行,您将它们指定为 -lOpenGL32.lib
和 -lGLu32.lib
,这是错误的。传递给 -l
参数的参数是没有标准文件名前缀或后缀的库名称。正确的 -l
参数应该是 -lopengl32
和 -lglu32
.