我正在尝试使用OpenGL和GLFW做一个非常简单的游戏。我已经获得了当前的代码,可以在Ubuntu上毫无问题地进行编译,但是当我在Windows上进行尝试时,会遇到各种无法解决的外部错误。
我的main.cpp
和game.h
文件中都包含:
#include<GLFW/glfw3.h>
我试过使用:
#define GLFW_DLL
#include<GLFW/glfw3.h>
然后链接
glfwdll.lib
而不是glfw3.lib
,这解决了一些错误,但不是全部。无论哪种方式,我都在Ubuntu上使用静态库,因此我也想在Windows上使用它。在研究之后,我尝试包括
User32.lib
和kernel32.lib
,删除默认库(使用Zl),以及许多其他我不记得的东西(但它们不起作用)。我当前的编译命令如下所示:
@echo off
cl /Zl /MT game.cpp /I C:\dev\include /link "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\User32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\kernel32.lib" C:\dev\lib\glfw3.lib C:\dev\lib\OpenGL32.lib
cl /Zl main.cpp /I C:\dev\include /link C:\dev\lib\glfw3.lib C:\Users\Daniel\projects\game\game.obj C:\dev\lib\OpenGL32.lib "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\User32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64\kernel32.lib"
这样,目标文件可以毫无问题地进行编译,但是在主文件中,对于我的目标文件中的所有glfw和openGl函数(无论是否使用它们),我一直遇到无法解决的外部错误,它们来自目标文件, glfw.lib文件。
令我真正困惑的是,我的游戏类目标文件编译时没有任何问题,但是链接时出现错误。
有人知道如何编译吗?
最佳答案
我已经研究了一段时间了,我发现有人说如果您使用32位二进制文件,它将起作用。遇到此问题时,我一直在使用64位二进制文件。我下载了32位二进制文件,并使用相同的方法进行了尝试,并且编译没有问题。
我不知道为什么会这样,但是对于遇到我问题的任何人,32位二进制文件都有效。