读书人

VC对话框工程上添加新的.cpp,h文件编译

发布时间: 2012-10-15 09:45:24 作者: rapoo

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



读书人网 >VC/MFC

热点推荐