需要的库
glew freeglut 及作者自己写的GLTools库
着三个库在源码光盘里面都有了,需要编译生成相应的库,或者从网络下载
出错提示及解决办法
1. 错误 C1083 无法打开包括文件: “ctype.h”: No such file or directory
无法打开包括文件stdio.h ctype.h ucrtd.lib
vs2015新版的小问题,这个问题是由于运行时使用的库文件缺少关键文件。
解决办法
打开项目空间,依次选择项目-->xxxxx属性(你的项目名字属性)
在打开的选项卡中选择vc++目录-->包含目录下拉条点击编辑
点击最上方的添加一个新地址,如图所示
-
这里的地址默认在
D:\Program Files (x86)\Windows Kits\10\Include\10.0.10150.0\ucrt
添加上就解决了缺失包含文件stdio.h,ctype.h的问题,
-
但是生成解决方案还会出现无法打开ucrtd.lib的问题,继续打开属性标签页,编辑库目录
D:\Program Files (x86)\Windows Kits\10\Lib\10.0.10150.0\ucrt\x86
2. 错误 LNK2019 无法解析的外部符号 __except_handler4_common,该符号在函数 __except_handler4 中被引用
错误 LNK2019 无法解析的外部符号 __imp__fgetc,该符号在函数 "bool __cdecl gltLoadShaderFile(char const *,unsigned int)" (?gltLoadShaderFile@@YA_NPBDI@Z) 中被引用
- Right-Click on the Project (e.g. SimulationTrial) -> Properties
- Set Configuration to "All Configurations"
- Goto Configuration Properties -> Linker -> Input.
- Set Ignore All Default Libraries: "No"
- Set Ignore Specific Default Libraries: "libcmtd.lib"
3. 错误 LNK2001 无法解析的外部符号 "const type_info::`vftable'" (??_7type_info@@6B@)
在项目属性 Linker -> Input->附加依赖项中 增加如下配置
D:\vswork\lib\freeglut.lib
D:\vswork\lib\glew32sd.lib
D:\vswork\lib\GLTools.lib
legacy_stdio_definitions.lib
4. 错误LNK2019 无法解析的外部符号 _glutDisplayFunc
链接阶段出了问题
- 在nuget中下载glut,注释掉#define FREEGLUT_STATIC。 编译
- 错误 LNK2005 _glewGetErrorString@4 已经在 glew32.lib(glew32.dll) 中定义
- 在nuGet程序包中卸载刚才安装的那两个包;
- 重新编译,OK
5. 一些标准库的函数链接不到
解决方案找到了。
在vs2015工程选项,链接器附加依赖项里面添加legacy_stdio_definitions.lib即可。
出现这个问题的原因是vs2015默认编译时将许多标准库采用内联方式处理,因而没有可以链接的标准库文件,所以要专门添加标准库文件来链接标准库中的函数。
warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
解决方法:是所有项目的这个"代码生成"属性设置保持一致。
项目——属性——配置属性——C/C++——代码生成:他有/MT,/MTd,/Md,/MDd四个选项,你必须让所有使用的库都使用相同的配置,否则就会有相应的提示,甚至可能会出现无法解析的函数。有时我们使用的库不是自己可以控制的,那么就只能把工程属性设置成河你使用的库相同的选项。
VS2013 解决方案下所有项目统一配置
- 首先 点击视图-》属性管理器 然后在第一个项目中右键点击新建项目属性表,起个你自己记得的名字,双击打开,用你勤奋的双手开始配置吧,同时也别忘了带着脑子,因为还比较耗费精力,编辑完成之后右键点击保存,在框里选择一个你熟悉的地址,当然你可以选择一个你不熟悉的地址然后奋力的搜索它,这是你的自由我无权干涉,保存好之后我们就有了一个项目属性文件,紧接着我
- 新建一个项目,同样在项目属性窗口右键点击这个项目选择导入属性表,然后选择之前保存的那个,OK!!
参考链接
备注
按照这个配置就能运行成功了
Change the Project properties:
- Right-Click on the Project (e.g. SimulationTrial) -> Properties
2 Set Configuration to "All Configurations"
- Goto Configuration Properties -> Linker -> Input.
- Set Ignore All Default Libraries: "No"
- Set Ignore Specific Default Libraries: "LIBC.lib;LIBCMTD.lib"
- Goto Configuration Properties -> Linker -> Advanced
- Set Image Has Safe Exception Handlers:"No (/SAFESEH:NO)"
- Click "OK"-Button.
属性中 c/c++ 预处理项 将“_CRT_SECURE_NO_WARNINGS”复制在以下红色框内,然后确定再单击应用即可。