为什么C++ Builder 5中#include <shlobj.h>会出现重复编译错误的问题,而在C++ Builder 4中不会(100分)

  • 主题发起人 主题发起人 xiaochengyong
  • 开始时间 开始时间
X

xiaochengyong

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么C++ Builder 5中#include <shlobj.h>会出现重复编译错误的问题,而在C++ Builder 4中不会
C++ Builder 5中提示如下错误:[C++ Error] shlobj.h(1406): E2238 Multiple declaration for 'FVSHOWINFO'
[C++ Error] shlobj.h(1578): E2238 Multiple declaration for 'FOLDERSETTINGS'
[C++ Error] shlobj.h(2776): E2238 Multiple declaration for 'DESKBANDINFO'
[C++ Error] shlobj.h(3438): E2238 Multiple declaration for 'SHELLFLAGSTATE'
 
你在你的头文件里最前面加上:
#ifndef shlobj.h
#define shlobj.h

最后面加上:
#endif
 
//---------------------------------------------------------------------------
#define NO_WIN32_LEAN_AND_MEAN //在这里有变化
#include 《vcl.h》
#pragma hdrstop
#include "shlobj.h"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
来晚一步,sw 说得很对。C++ Builder 5 对 VCL 头文件做了优化处理。
 
接受答案了.
 
后退
顶部