先说结论:使用的库是32位的而写的代码目标机器是64位的,所以报错产生冲突
自己因为太蠢遇到的坑,焦头烂额搞了很久,记录一下,防止将来再掉进去(万一有和我一样掉进来的,希望能帮到你
都是OPENGL,freeglut不是glut
最近写代码半路突然要用到openGL,正好之前安装了glut,省了再安装配置了,冲冲冲。直接去前面写过的openGL程序里复制粘贴复制粘贴,运行时候蹦出来:
"XXX\Visual Studio2017\VC\Tools\MSVC\14.16.27023\lib\x64\glut32.lib : warning LNK4272: 库计算机类型“x86”与目标计算机类型“x64”冲突",代码中的所有GLUT函数都是无法识别的外部指令
直接懵了,去网上查吧,找到一个类似的但也没能解决我的问题,大部分是“模块计算机类型x64与目标计算机类型x86冲突”,一晚上弄的头疼都没搞明白,第二天在论坛里找有没有类似的问题,在一个讨论glut有没有64位的帖子里发现有人说:“glut那时候都没有64位机”
去openGL官网看看
最初下载的时候到这里就是不看什么意思,硬着头安装了个GLUT,吃了没文化的亏
解决办法:下一个freeglut就行了
freeglut的主页上也有提到GLUT(正是我安装的那个)
“最初的GLUT已经废弃了,最新的版本(3.7)是1998年8月发布的,现在的freeglut是GLUT的完全替代库,它能够完全替代GLUT。”
也就是说两个库的函数使用是一样的(顺带一提,64位系统是零几年才出现的,论坛老哥诚不欺我)
补一张后来发现的,(1998戳得眼睛疼)
安装freeglut过程中的小坑
freeglut的配置教程网上有一大堆,就简单提一下关键点,
1.下载freeglut和cmake后,使用cmake时注意,后缀要选择win64
2.生成完毕之后使用VS分别以Debug和Release生成解决方案,生成解决方案时要注意自己需要的freeglut是32位的还是64位的
自己做的时候上面这两步忘记是哪一步翻了车(应该是VS生成解决方案时候没有仔细看,x86摆那里就直接生成了),调试代码的时候又是“库计算机类型“x86”与目标计算机类型“x64”冲突”
更新:
Visual Studio能够直接安装nupengl,整合了freeglut,glfw和glew,不用再自己编译了。
唯一的问题是拒绝眼瞎,容易眼瞎的地方加粗标红。
VS上配置openGL大都是使用VS自带的Nuget来统一管理包
右键项目,管理Nuget程序包,然后搜索nupengl,显示找不到包。
从已安装切换到浏览
右上角程序包源只有一个Offline Package,点开设置,绿色加号添加
名称随便比如xx
来源链接:https://www.nuget.org/api/v2/
确定之后记得右上角重新选择程序包源为xx,就刚才新建的那个
整合了freeglut,glfw和glew
网上说要安装检索出的两个,实际上安装第一个core就会把第二个一起装上