VS2005使用宝典

前言:感谢您浏览该博客文章,如有任何的疑问或者意见欢迎通过邮件进行交流,提供linux技术支持。本人是Linux的布道者。

邮箱:[email protected]



问题1:unsigned大多数编译器都会认为是unsigned int,是否意味着我们可以进行缩写,编码的成本在哪里,还是调试的成本最重要,和可读性。


问题2:fatalerror LNK1112: 模块计算机类型“MIPS”与目标计算机类型“THUMB”冲突

参考:http://www.jb51.net/softjc/83192.html

解决方案:请选择与解决方案相同的编译平台。


问题3:太多的警告信息妨碍错误信息的查看

解决方案:点击视图->其他窗口->错误列表


问题4:调试的过程中出现调用汇编代码,如何查看源代码

解决方案:查看调用堆栈,双击,查看当前调用汇编的代码是那个函数产生的,也可以鼠标右键点击选择查看源代码(前提是必须源代码,调用的库提供的只是dll,没有源码)


问题5:CXX0017: 错误: 没有找到符号test1d.dll  test2d.dll

解决方案:由于解决方案中有些模块提供的是release版本的dll,所以无法将整个工程置于debug模式,从debug调试出错的信息中最后的d代表的是debug调试版本的dll。所以

必须在解决方案配置中选择release


问题6:项目源码非常多,如果修改一个文件代码选择重新生成解决方案大概需要花费15分钟的时间,目前没有测试过生成解决方案是否可以减少编译和链接的时间?

解决方案:修改某个文件之后不需要重新生成解决方案,然后直接开始执行调试,自动将修改的文件重新编译。


问题7:error LNK2001: 无法解析的外部符号 "public: virtual class  CTest::TCodeEntry const * __thiscall CTest::CTestImpl::GetItemByCode(unsignedint)" (?GetItemByCode@CTest@CTestImpl @@UAEPBVTCodeEntry@2@I@Z)     testimpl.obj

解决方案:遇到这个问题,表示在链接的过程中,没有找到真正的实现,通过半小时的查阅代码发现如下的问题:

引用class A

在函数Func(A a)中进行了调用,在实际的过程中,A被定义为了struct结构体类,这个时候链接的过程中,就没有办法找到class A,这一点应该注意。

    在实际的过程中,务必注意真正的实现和声明是否一致,这个非常重要。


问题8:error C2259TestQuery::CtestQueryImpl :can not instantiate abstract calss

解决方案:首先了解虚基类作为接口,所有的纯虚函数必须在子类中实现,否则编译出错,然后查看当前的编译错误提示,说明目前的虚基类无法实例化,说明有纯虚函数没有实现,通过半个小时的代码查阅,发现是子类的函数声明和基类的函数声明参数列表不一致,说明在拷贝代码的过程中出现错误,或者修改代码,但是基类代码没有同步

1)查看继承的基类到底有多少个,这些基类的纯虚接口是否已经实现

2)查看派生类中是否有函数携带了=0的纯虚接口

3)最好的方法是删除以前的代码,重新编写一遍,语法的错误,无法在VS中显示。


你可能感兴趣的:(vs,编译,错误)