问题描述
同样是一段windowsshell扩展程序,在vs2008下运行就没问题,在vs2005环境下运行会出现如下问题errorC2787:'IExtractIconW':noGUIDhasbeenassociatedwiththisobjecterrorC2440:'initializing':cannotconvertfrom'DWORD_PTR'to'constIID*'errorC2440:'initializing':cannotconvertfrom'ATL::_ATL_CREATORARGFUNC(__stdcall*)'to'DWORD_PTR'我想在vs2005下运行成功,请问该如何解决,更新sdk么(如何更新)?还是另有高招?
解决方案
解决方案二:
可能是使用的netframework版本的原因
解决方案三:
关键的问题是以下头文件没有包含正确#include"shlobj.h"#include"comdef.h"#include<shlguid.h>下面是收集的一些问题解决过程:1、HaveyoudownloadedtheLatestPlatfromSDK?Ifso,areyourvcdirspointingtotheproperincludedirs,eg:shlguid.hisgettingpickedupfromtheSDKincludeandnotthevc98include.Yousetthoseinthetools-Options->directories->includedirsforVC2、Therearetwo<comdef.h>headerfilesinVC.NET,oneinVc7/includeandtheotherinVc7/PlatformSDK/include.Theformersplitsoffthesmartpointertypedefsintocomdefsp.h,anditdoesn'tincludeIContextMenu.Thelatterdoes.Youcantryto#includethePlatformSDKheaderdirectly,changeyourINCLUDEpathorder,orsupplythemissingtypedefyourself,e.g.struct__declspec(uuid("000214e4-0000-0000-c000-000000000046"))IContextMenu;_COM_SMARTPTR_TYPEDEF(IContextMenu,__uuidof(IContextMenu));3、怎样找到Interface的GUID?我在注册表HKCRInterface下可以找到形式为{aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee}的键,如果其下有默认项="Interface",则说明这个键就是该Interface的GUID。有没有其它方法?(1)VC6commonTools下有个OLE/COMObjectViewer很方便,但在VC2005下就没找到这个工具(2)PlatformSDKincludecomdef.h中也有GUID的定义4、__uuidof它是C++运算符[总结]如上所述,如果把PlatformSDK/include放在前面仍然不可以的话,就下载新的SDK,把include目录包含进去就好了。个人感觉手动添加这些uuid值如,struct__declspec(uuid("000214e4-0000-0000-c000-000000000046"))IContextMenu;_COM_SMARTPTR_TYPEDEF(IContextMenu,__uuidof(IContextMenu));过了这个村,还会有下个店,还不如直接更新一下SDK来得直接保险。
解决方案四:
lz很厉害啊,我来蹭分了。不过一般downgrade可能都会有问题。
解决方案五:
可能是版本的原因,调试一下试试咯,。
解决方案六:
可能是版本的原因,在VS2005打上netframework3.0补丁试试
解决方案七:
VS2005和VS2008的版本不一样,相应的库也就有区别另外也有可能是netframework的问题,我用的是3.5版的,再不行再升级SP1试试
解决方案八:
引用2楼abc86269456的回复:
关键的问题是以下头文件没有包含正确#include"shlobj.h"#include"comdef.h"#include<shlguid.h>下面是收集的一些问题解决过程:1、HaveyoudownloadedtheLatestPlatfromSDK?Ifso,areyourvcdirspointingtoth……
谢谢分享~
解决方案九:
用的是VS2010,2010好多优化过了,用时没问题
解决方案十:
vs2005我也用不惯~~~
解决方案十一:
VS2005和VS2008的版本不一样,相应的库也就有区别
解决方案十二:
解决方案十三:
我机器安完VS2005后VS2008就安不上了
解决方案十四:
谢谢分享引用2楼abc86269456的回复:
关键的问题是以下头文件没有包含正确#include"shlobj.h"#include"comdef.h"#include<shlguid.h>下面是收集的一些问题解决过程:1、HaveyoudownloadedtheLatestPlatfromSDK?Ifso,areyourvcdirspointingtot……
解决方案十五:
有些函数的参数变了,尤其是vs2008sp1里面,很多类库都升级了
解决方案:
引用4楼dcymfh的回复:
可能是版本的原因,调试一下试试咯,。
版本不同呀
解决方案:
这个我也要多注意,也面临vs2005与vs2008的取舍
解决方案:
该回复于2012-02-11 19:58:31被版主删除