shlobj.h编译出错的解决方法!

原创 2004年09月12日 15:07:00

 

 

Be sure to include the following header in the COM object header file:

#include <shlobj.h>

Now you find out if you need to makes some changes before continuing. Hit build and you may likely be greeted with some error messages.

> [C++ Error] shlobj.h(1762): E2238 Multiple declaration for 'FVSHOWINFO'
> [C++ Error] shlobj.h(1936): E2238 Multiple declaration for 'FOLDERSETTINGS'
> [C++ Error] shlobj.h(3717): E2238 Multiple declaration for 'DESKBANDINFO'
> [C++ Error] shlobj.h(4808): E2238 Multiple declaration for 'SHELLFLAGSTATE'

This problem is addressed in the upd1rdme.txt file in the builder directory, which appears after applying the service pack. For what it's worth, I have never tried the solution suggested in the upd1rdme.txt file. I simply commented the areas out of the ShlObj.hpp. Later I would read a post by Alex Bakaev [Team B] in borland.public.cppbuilder.activex that suggested commenting out the offending parts from the ShlObj.hpp file also. So there you have it. Someone in the know also suggests the "comment it out" solution. Great minds think alike, and all that.

The following code was all that I commented out of ShlObj.hpp to get the project to build.

//typedef FVSHOWINFO *PFVShowInfo;
//typedef FVSHOWINFO  TFVShowInfo;
//typedef FOLDERSETTINGS *PFolderSettings;
//typedef FOLDERSETTINGS  TFolderSettings;
...
//typedef DESKBANDINFO *PDeskBandInfo;
//typedef DESKBANDINFO  TDeskBandInfo;
...
//typedef SHELLFLAGSTATE *PShellFlagState;
//typedef SHELLFLAGSTATE  TShellFlagState;

As I said, I commented the areas out of the ShlObj.hpp file. You can do the same, or you can try the solution in the upd1rdme.txt file. I know at least one of them works for sure.

After you have made the changes the project should now build. Of course , it does nothing of any use to us yet. But building the project is always an accomplishment in C++, so you might as well celebrate this small victory.

 

另:shobjidl.h也出过错,我用安装文件中的同名文件替换当前文件.解决了.怀疑是之前改动过了.

vc6.0下函数SHGetFolderPath找不到

原因:C6确实编译不了这个,需要一个头文件shlobj.h(MSDN说是shfolder.h),这个头文件VC6里的陈旧了,需要下载新的MICROSOFT SDK包,用那里边的头文件替换掉VC6的。 ...
  • dongpanshan
  • dongpanshan
  • 2014年08月26日 18:10
  • 1821

解决KinectSDK 包含头文件"NuiApi.h"报错问题

C:\Program Files\Microsoft SDKs\Kinect\v1.7\inc\NuiSensor.h(46): error C2146: 语法错误: 缺少“;”(在标识符“INuiA...
  • sangni007
  • sangni007
  • 2014年10月10日 14:27
  • 4169

QT:打开外部程序

1. 使用QProcess的startDetached函数。startDetached函数有三种原型: static bool startDetached(const QString &pro...
  • qq_22671705
  • qq_22671705
  • 2016年08月16日 11:36
  • 1240

【VC6.0】打开文件时出错,利用filetool解决win7、win8不兼容VC6.0

win7下VC6 打开添加无法使用的解决办法: 1.下载微软发布的补丁,filetool,不过是以未编译工程的形式发布的.解压出来,记住路径...
  • Joanna_yan
  • Joanna_yan
  • 2014年07月05日 10:20
  • 2631

无法打开包含文件:“fstream.h”

在VS2010里面使用vc6.0的那种#include 方式,但是编译时提示fatal error C1083: 无法打开包括文件:“fstream.h”: No such file or direc...
  • zzjxiaozi
  • zzjxiaozi
  • 2013年01月16日 12:33
  • 10578

VS2013/2012 下无法打开 源 文件“stdafx.h”的解决方法

VS2013/2012 下无法打开 源 文件“stdafx.h”的解决方法 2013-12-15 20:39 21569人阅读 评论(8) 收藏 举报  分类:   C/C++(12)  ...
  • lphbtm
  • lphbtm
  • 2016年02月24日 14:47
  • 26430

在VS2013下如何使用头文件unistd.h和去除vs2013编译警告

简介在编译CUDA random forest有关的项目的时候出现了如上错误,从网上下载了这个头文件然后加入到项目里面还是不行。查了下资料,头文件unistd.h是Linux/Unix的系统调用,包含...
  • earbao
  • earbao
  • 2016年06月25日 09:57
  • 5064

Eigen在VS下常见问题

Eigen 在VS下常见问题的解决方案
  • ZSZ_shsf
  • ZSZ_shsf
  • 2017年03月27日 21:11
  • 384

win7中VC6.0 visual C++6.0无法打开文件和向工程中添加文件的解决办法

一、彻底解决兼容问题:Windows 7下载安装 Visual C++ 6.0(VC6) 全程图解 网上成千上万的诸如 “有没有Win7兼容的VC6的下载”、“Win7下Visual C++ 6.0...
  • xglhw1987
  • xglhw1987
  • 2014年11月01日 13:59
  • 2941

cocos2d-x“无法打开源文件”

这一周开始学习cocos2d-x,刚开始就碰到了一些问题,新建完工程后,自己给工程添加新的文件,有两种方式: 第一种是使用VS的类向导,让软件帮我们把需要添加的类加入到工程,可以一次把头文件和cp...
  • shiwazone
  • shiwazone
  • 2015年05月21日 23:02
  • 2312
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:shlobj.h编译出错的解决方法!
举报原因:
原因补充:

(最多只允许输入30个字)