[C++ Error] shlobj.h(1936): E2238 Multiple declaration for 'FOLDERSETTINGS',有什么方

  • 主题发起人 主题发起人 杜成福
  • 开始时间 开始时间

杜成福

Unregistered / Unconfirmed
GUEST, unregistred user!
[C++ Error] shlobj.h(1936): E2238 Multiple declaration for 'FOLDERSETTINGS',有什么方法可以解决?(100分)<br />不能去掉这个头文件,另外一个也不能去
 
//---------------------------------------------------------------------------
#define NO_WIN32_LEAN_AND_MEAN /*注意此处*/
#include "shlobj.h" //这一行必须放在#include &lt;vcl.h&gt;之前
#include 《vcl.h》
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
BROWSEINFOA bi;
char WDir[MAX_PATH];
LPITEMIDLIST ItemID;
memset(&amp;bi, 0, sizeof(BROWSEINFOA));
memset(WDir, 0, MAX_PATH);
bi.hwndOwner = Handle;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpszTitle = "请选择路径:";
ItemID = SHBrowseForFolder(&amp;bi);
SHGetPathFromIDList(ItemID, WDir);
Edit1-&gt;Text = String(WDir);
}
//---------------------------------------------------------------------------
 
谢谢,顺便问一下,NO_WIN32_LEAN_AND_MEAN 是什么意思?
 
如果你安装了C++Builder5的补丁1,就会找到../CBuilder5/upd1rdme.txt这个readme文件,以
“NO_WIN32_LEAN_AND_MEAN”字符串搜索,就会看到详尽的解释了
我上面提供的方法最省事,也最标准,但有时仍然不行,那就试着将#include &lt;vcl.h&gt;这一行去掉,
如果你的程序中必须要有#include &lt;vcl.h&gt;,那就用最笨的也是最保险的方法:将它提示多重定义
的地方注释掉,编译完后在改回来。如:
提示 Multiple declaration for 'FVSHOWINFO'
就将shlobj.h文件中的下面这一句注释就可以了
} /*FVSHOWINFO,*/ *LPFVSHOWINFO; //1762行
 
后退
顶部