首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

VC对话框工程上添加新的.cpp,h文件编译不通过,重定义

2012-10-15 
VC对话框工程下添加新的.cpp,.h文件编译不通过,重定义原先在dlg.cpp文件下,通过将函数原型和函数声明加入,

VC对话框工程下添加新的.cpp,.h文件编译不通过,重定义
原先在dlg.cpp文件下,通过将函数原型和函数声明加入,并添加以下三个头文件可以正常使用

C/C++ code
#include <imaging.h>#include <initguid.h>#include <imgguids.h>


现在打算将这几个函数写成cpp和h的形式,编译出错,出现imgguids.h中的变量重定义错误。文件如下:
.h文件:
C/C++ code
#ifndef _JPG_IMGFAC_LIB_H_#define _JPG_IMGFAC_LIB_H_#include <imaging.h>#include <initguid.h>#include <imgguids.h>void ConvBmp2jpg(char *bmpbuf, int bmpsize, char *jpgbuf, int *jpgsize);void ConvJpg2bmp(char *jpgbuf, int jpgsize, char *bmpbuf, int *bmpsize);BOOL CreateStreamOnBuffer(const char * pBuffer, DWORD bufsize, IStream ** ppStream);BOOL GetEnCodecCLSID(IImagingFactory* pImagingFactory,WCHAR * wszMimeType ,CLSID * pclsid );#endif


.cpp文件:
C/C++ code
//#include "StdAfx.h"#include "jpgimgfaclib.h"void ConvBmp2jpg(char *bmpbuf, int bmpsize, char *jpgbuf, int *jpgsize)//后面是每个函数的实现{


出现的错误如下:
mv4i\imgguids.h(87) : error C2374: 'ENCODER_LUMINANCE_TABLE' : redefinition; multiple initialization
  d:\program files\windows ce tools\wce500\yc2440\include\armv4i\imgguids.h(87) : see declaration of 'ENCODER_LUMINANCE_TABLE'
d:\program files\windows ce tools\wce500\yc2440\include\armv4i\imgguids.h(88) : error C2374: 'ENCODER_CHROMINANCE_TABLE' : redefinition; multiple initialization
  d:\program files\windows ce tools\wce500\yc2440\include\armv4i\imgguids.h(88) : see declaration of 'ENCODER_CHROMINANCE_TABLE'
d:\program files\windows ce tools\wce500\yc2440\include\armv4i\imgguids.h(89) : error C2374: 'ENCODER_SAVE_FLAG' : redefinition; multiple initialization
  d:\program files\windows ce tools\wce500\yc2440\include\armv4i\imgguids.h(89) : see declaration of 'ENCODER_SAVE_FLAG'

我的.h文件在.cpp中包含了一次,在对话框工程dlg.cpp中包含了一次,感觉我的.h中的#ifndef这个宏没起作用似的。
请帮我看看是什么原因啊?只有37分了

谢谢了

[解决办法]
'ENCODER_LUMINANCE_TABLE' 放在CPP文件里定义试试,其它的也这么试
[解决办法]
h文件用#pragma once试试
[解决办法]
你把这三个文件放到stdafx.h中,这样以后不用每次编译这3个头文件了。
[解决办法]
就这个一个错误么?

ENCODER_LUMINANCE_TABLE 定义的时候弄个预编译

就像你上面写的那样
#ifndef _JPG_IMGFAC_LIB_H_
#define _JPG_IMGFAC_LIB_H_

#endif



热点排行