我用的是VC+openCV,为什么下面这个程序在别人的机子上可以正常运行,而在我的机子上会报错呢?我觉得是我的visual studio出了问题,但不知道问题在哪?
程序如下:
#include"stdafx.h"
#include"cv.h"
#include"highgui.h"void main()
{
IplImage* img=cvLoadImage("D:\\001.jpg");
    
IplImage* img1hdr=cvCreateImageHeader(cvSize(20,30),img->depth,img->nChannels);
IplImage* img2hdr=cvCreateImageHeader(cvSize(20,30),img->depth,img->nChannels); img1hdr->origin=img->origin;
img2hdr->origin=img->origin;  
img1hdr->widthStep=img->widthStep;
img2hdr->widthStep=img->widthStep; img1hdr->imageData=img->imageData+10*img->widthStep+5*img->nChannels;
img2hdr->imageData=img->imageData+60*img->widthStep+50*img->nChannels; cvNot(img1hdr,img1hdr);
cvNot(img2hdr,img2hdr); cvNamedWindow("crystal",0);
cvShowImage("crystal",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvReleaseImageHeader(&img1hdr);
         cvReleaseImageHeader(&img2hdr);
cvDestroyWindow("crystal");
}
报错如下:
------ 已启动生成: 项目: excercise3_6, 配置: Debug Win32 ------
正在编译...
excercise3_6.cpp
d:\opencv\cv\include\cvcompat.h(784) : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(47) : error C2011: “vc_attributes::YesNoMaybe”: “enum”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(47) : 参见“vc_attributes::YesNoMaybe”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(57) : error C2011: “vc_attributes::AccessType”: “enum”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(57) : 参见“vc_attributes::AccessType”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(71) : error C2011: “vc_attributes::Pre”: “struct”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(71) : 参见“vc_attributes::Pre”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(68) : error C3094: “repeatable”: 不允许匿名使用
        d:\visual studio 2008\projects\excercise3_6\excercise3_6\predefined c++ attributes (compiler internal)(147) : 参见“repeatable”的声明
        属性只能应用于: 'class', 'struct'
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(102) : error C2011: “vc_attributes::Post”: “struct”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(102) : 参见“vc_attributes::Post”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(99) : error C3094: “repeatable”: 不允许匿名使用
        d:\visual studio 2008\projects\excercise3_6\excercise3_6\predefined c++ attributes (compiler internal)(147) : 参见“repeatable”的声明
        属性只能应用于: 'class', 'struct'
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(133) : error C2011: “vc_attributes::FormatString”: “struct”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(133) : 参见“vc_attributes::FormatString”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(145) : error C2011: “vc_attributes::InvalidCheck”: “struct”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(145) : 参见“vc_attributes::InvalidCheck”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(142) : error C3094: “repeatable”: 不允许匿名使用
        d:\visual studio 2008\projects\excercise3_6\excercise3_6\predefined c++ attributes (compiler internal)(147) : 参见“repeatable”的声明
        属性只能应用于: 'class', 'struct'
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(155) : error C2011: “vc_attributes::Success”: “struct”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(155) : 参见“vc_attributes::Success”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(166) : error C2011: “vc_attributes::PreBound”: “struct”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(166) : 参见“vc_attributes::PreBound”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(163) : error C3094: “repeatable”: 不允许匿名使用
        d:\visual studio 2008\projects\excercise3_6\excercise3_6\predefined c++ attributes (compiler internal)(147) : 参见“repeatable”的声明
        属性只能应用于: 'class', 'struct'
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(176) : error C2011: “vc_attributes::PostBound”: “struct”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(176) : 参见“vc_attributes::PostBound”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(173) : error C3094: “repeatable”: 不允许匿名使用
        d:\visual studio 2008\projects\excercise3_6\excercise3_6\predefined c++ attributes (compiler internal)(147) : 参见“repeatable”的声明
        属性只能应用于: 'class', 'struct'
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(186) : error C2011: “vc_attributes::PreRange”: “struct”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(186) : 参见“vc_attributes::PreRange”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(183) : error C3094: “repeatable”: 不允许匿名使用
        d:\visual studio 2008\projects\excercise3_6\excercise3_6\predefined c++ attributes (compiler internal)(147) : 参见“repeatable”的声明
        属性只能应用于: 'class', 'struct'
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(198) : error C2011: “vc_attributes::PostRange”: “struct”类型重定义
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(198) : 参见“vc_attributes::PostRange”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(195) : error C3094: “repeatable”: 不允许匿名使用
        d:\visual studio 2008\projects\excercise3_6\excercise3_6\predefined c++ attributes (compiler internal)(147) : 参见“repeatable”的声明
        属性只能应用于: 'class', 'struct'
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(235) : error C2370: “SA_Yes”: 重定义;不同的存储类
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(235) : 参见“SA_Yes”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(236) : error C2370: “SA_No”: 重定义;不同的存储类
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(236) : 参见“SA_No”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(237) : error C2370: “SA_Maybe”: 重定义;不同的存储类
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(237) : 参见“SA_Maybe”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(240) : error C2370: “SA_NoAccess”: 重定义;不同的存储类
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(240) : 参见“SA_NoAccess”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(241) : error C2370: “SA_Read”: 重定义;不同的存储类
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(241) : 参见“SA_Read”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(242) : error C2370: “SA_Write”: 重定义;不同的存储类
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(242) : 参见“SA_Write”的声明
d:\visual studio\vc\include\codeanalysis\sourceannotations.h(243) : error C2370: “SA_ReadWrite”: 重定义;不同的存储类
        d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h(243) : 参见“SA_ReadWrite”的声明
生成日志保存在“file://d:\Visual Studio 2008\Projects\excercise3_6\excercise3_6\Debug\BuildLog.htm”
excercise3_6 - 25 个错误,1 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

解决方案 »

  1.   

    有没有在setting里面设置库和头文件啊
      

  2.   

    估计是Opencv没有配置好吧?LZ其他的Opencv程序可以运行吗
      

  3.   

    环境问题。不过楼主你的编译为什么会包含两个不同位置的同一个头文件?并且这两个好像还有冲突(重定义;不同的存储类),可能是版本不一样。d:\visual studio\vc\include\codeanalysis\sourceannotations.h
    d:\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h
      

  4.   

    配置问题吧,检查下VS中的OPENCV头文件和库文件路径、系统环境变量、工程附加依赖项。
      

  5.   

    属性->C/C++->预编译头->不使用预编译头。
    可能编译器不同会有不同的方法,方正大致就这样了。
      

  6.   

    谢谢各位的回帖!问题解决了!这个程序是我以前写的,后来我重装了一下visual studio,所以以前的这些程序都不能直接运行了,只要再重新建一个project,然后把这个代码复制进去就可以了!