VC对话框工程上添加新的.cpp,h文件编译不通过,重定义
VC对话框工程下添加新的.cpp,.h文件编译不通过,重定义
原先在dlg.cpp文件下,通过将函数原型和函数声明加入,并添加以下三个头文件可以正常使用
现在打算将这几个函数写成cpp和h的形式,编译出错,出现imgguids.h中的变量重定义错误。文件如下:
.h文件:
.cpp文件:
出现的错误如下:
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
原先在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