【小白入门】Open CASCADE学习-错误及其解决情况(使用boost测试用例调试)

环境配置及Hello World

需要用到的库

  • boost
  • occt

步骤

  1. 新建Win32控制台应用程序
  2. 包含库(将库存放路径添加到头文件附加库目录和链接器附加库目录)
  3. 包含头文件(#include)
  4. 使用库

错误及解决方案

VC++目录和附加目录

引用自博客VC++包含目录和c/c++附加包含目录的区别

在解决方案的属性页里面,有这样四个设置选项,包含目录(VC++目录),库目录(VC++目录),附加包含目录(C/C++ ->常规),附加库目录(链接器->常规),其四者均在”项目->属性->配置属性”下进行配置,其区别为

  • 目录与附加目录
    目录修改了系统的宏的值,是全局的;附加目录用于当前项目,对其他项目没有影响
    但据博客所说,VS2010以后的版本两者在功能上不再有区别(都只作用于当前工程。不过鉴于大部分情况都使用且建议使用附加目录进行配置,所以哪怕VC++目录的全局功能被阉割掉了,对我们普通用户来说也影响不大 😄
  • 包含目录与库目录
    包含目录为寻找#include<xxxx.h>中的xxxx.h的搜索目录;库目录为寻找.lib文件的搜索目录

特别地,链接器->输入中还有一个附加依赖项需要配置,它是本工程的lib库,指明了本工程所哦那个到的全部.lib文件。(C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,.cpp,.cc,*.c会被打包成一个.lib文件,这样可以保护源代码)
通常,使用一个第三方库时需要同时对包含目录,库目录和依赖项三个地方进行配置。
在这里插入图片描述

debug和release

因为涉及到属性配置,就不得不关注解决方案配置的问题(也有人叫做运行选项),在vs中,有两种自带的解决方案配置选项,分别是debug和release,其中默认的为debug
在这里插入图片描述

Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,支持单步运行调试和在变量窗口中查看变量,以便于程序员调试程序。在bin\debug\目录中有两个文件,除了要生成的.exe或.dll文件外,还有.pdb文件,.pdb文件中就记录了代码中的断点等调试信息。
Release 称为发布版本,Release模式下不包含调试信息,并对代码进行了优化,使得程序在代码大小和运行速度上都是最优的,\bin\release\目录下只有一个.exe或.dll文件。在项目文件夹下除了bin外,还有个obj目录。编译是分模块编译的,每个模块的编译结果就保存在了obj目录下。最后会合并为一个exe或者dll文件保存到\bin\release\目录中。因为每次编译都是增量编译,也就是只重新编译改变了的模块,所以这个obj的目录的作用就是保存这些小块的编译结果,加快编译速度。

总结就是,需要调试程序时,选用Debug选项,调试好不需要逐句修改而需要程序快速运行时,选用Release选项。

引用自博客1博客2

无法打开lib文件

在这里插入图片描述
无法打开一定是没有包含。
无论是无法打开.lib,.dll,.h还是什么,只要无法打开,一定是没有包含。最简单粗暴的解决方法就是找到这个文件所在的路径然后包含进去。

但是我们知其然也要知其所以然,只有知道为什么会出现这个错误,才能真正避免这个错误。排除包含路径方式错误,粗心导致路径写错这种低级错误,产生这个问题的原因大概有三种,其中两种都与前文提到的解决方案配置有关

  • 环境变量指代错误
    如果在编辑属性页面设置路径时使用了环境变量($(xxx)),就需要检测环境变量的作用域是否正确,其指代的路径是否是我们所需要的路径。特别的,VS自己生成的环境变量仅仅在当前工程中生效,若希望将其复制到另外的工程中仍有效,需要在windows系统中设置系统环境变量。

  • 属性配置与运行方式不匹配
    属性界面同样有解决方案配置选择按钮,它决定了当前编辑的属性是属于那种解决方案配置的,两种解决方案配置的属性是两套独立的信息,如果你仅修改编辑了release的属性信息却使用debug方式进行编译,那自然是会报错的,因为根本就没有针对它进行任何配置,不报错才见鬼了。
    当然,VS一般会根据你所选择的解决方案配置自动切换属性编辑界面的选项,一般来说不会出现这个问题。
    在这里插入图片描述

  • 带d的是dubug的库,在带d的路径下
    本节所出现的错误是因为在debug模式下调试,debug的属性编辑界面路径却写的是release相关库的路径。仔细看错误信息
    在这里插入图片描述
    无法找到的lib文件中带着gd字样。一般来说,带有d,de,gd等字样的通常是debug的lib文件,而不带这些字样的便自然是release的礼包了。打开OTTC,我们可以看到,带有d,de,gd等字样的lib文件均放在带debug文件夹(或其他带d关键词文件夹)中,而不带这些字样的均放在release文件夹(另一个lib文件夹)中。为了正确索引lib文件目录,我们应当在debug属性页面填写debug文件夹路径,在release属性页面填写release文件夹路径
    在这里插入图片描述

无法解析外部命令

在这里插入图片描述
存在无法解析的外部命令,说明有头文件没能成功包含。
没有添加附加依赖项,没有包含所用的lib库,而定义在lib中,自然找不到。
一般的,为了避免这种错误,会直接一股脑把库中所有的lib文件名都添加进附加依赖项中。
在这里插入图片描述

找不到动态链接库

在这里插入图片描述
这种错误一般出现在千辛万苦编译通过成功生成解决方案准备快乐运行一次宣告工作结束的时候,给刚刚因为编译通过而开始快乐的小菜鸡带来毁灭式的致命打🐔
不过不必慌,只需要将动态链接库(.dll文件)复制到对应的工程dubug/release文件夹下即可解决此类问题。在这里插入图片描述

没有可用的测试用例

在这里插入图片描述
检查自己指定的测试套件下是否有此测试用例
一般导致这个错误的原因通常都是粗心,打错了套件或者用例的名字。也有可能和我一样,打反了斜杠(是 /)
在这里插入图片描述

试图读取不可访问数据

在这里插入图片描述
这种错误不是程序本身的问题,而是试图打开的文件不可访问,此时应该检查文件是否完好可读,文件路径是否正确有效。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值