首页 > 代码库 > 几个调试错误

几个调试错误

#1,报错1

LINK : fatal error LNK1104: cannot open file ‘D:\…\MyProj.exe‘

原因:可能是.exe已经在运行,所以程序无法打开同一个.exe可执行程序,当前这是我在VS中编译链接时遇到的问题;

解决办法:关掉已有的.exe,再运行程序。

 

#2,报错

c:\program files\boost\boost_1_47\boost\asio\detail\socket_types.hpp(22): fatal error C1189: #error : WinSock.h has already been included

原因:未明;

解决办法:将boost/asio.hpp放到windows.h前面。

延伸:ACE中有个类似问题,所以需要将OS.h放到最前面。

 

#3,报错

fatal error C1083: 无法打开预编译头文件

原因:编译器一般都是以文件为单位进行编译,如果修改了工程中的一个文件,那么将导致所有文件都要从新编译,这样的编译将耗费很长时间。为了提高编译速度,将那些不常被修改,比较稳定,文件单独包含到一个指定的头文件中, 然后生成一个预编译头文件 *.pch 。 VC中默认的头文件为 stdAfx.h, 但光有头文件无法编译,所以还要用到 StdAfx.cpp里只包含一句有效代码,这样编译时,通过编译 stdAfx.cpp就把大部分系统头文件编译进来, Debug目录下便会产生一个 存储了预编译信息的 *.pch 文件。如果 *.pch文件损坏或者不存在,就会出现,题目所示的无法打开预编译头文件的错。

解决办法:步骤/方法右键点击你创建的项目,选择“属性标签”点击属性,弹出“项目属性页”,在左侧找到以下位置  配置属性 -->  C/C++  --> 预编译头,并选择它:在右边的菜单中选择 “创建/使用预编译头”中的“不使用预编译头文件”点击“确定”按钮退出即可原因分析。

 

#4,报错

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\winspool.h(1187): error C2872: “ACCESS_MASK”: 不明确的符号

原因:using namespace cv和windows.h中ACCESS_MASK定义冲突;

解决办法:注释掉using namespace cv,再所有需要用到cv的地方加cv::

 

都是在创建dll工程的时候实际遇到的问题,特此记录。

几个调试错误