在xp 64bit下用shell插入自己的右键菜单
各位好啊!
我最近从网找了一段用通shell实现把自己的菜单插入系统右键菜单中(如:右击文件,添加压缩文件),
我是在win32编译的dll,在xp32位下使用一切正常,但是在xp64位下测试则显示dll注册成功,但右键文件夹或文件均不出显自己的菜单。本来想把项目在vs2005,64位下重新编译下试试,但是报了一大堆的BUG.如下:
atlsd.lib(atlfuncs.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>atlsd.lib(atlfuncs.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>atlsd.lib(Allocate.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>atlsd.lib(AtlTraceModuleManager.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>atlsd.lib(Externs.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>atlsd.lib(AtlDebugAPI.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>atlsd.lib(AtlDebugAPI.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>atlsd.lib(atlcommodule.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>TxtShellContextMenu.obj : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>TxtShellContextMenu.obj : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>atlsd.lib(atlbase.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>atlsd.lib(atltrace.obj) : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>StdAfx.obj : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>StdAfx.obj : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>TxtContextMenu.obj : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>TxtContextMenu.obj : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete(void *)" (??3@YAXPEAX@Z)
1>StdAfx.obj : error LNK2019: 无法解析的外部符号 "void __cdecl operator delete[](void *)" (??_V@YAXPEAX@Z),该符号在函数 "public: void * __cdecl ATL::CComTypeInfoHolder::stringdispid::`vector deleting destructor'(unsigned int)" (??_Estringdispid@CComTypeInfoHolder@ATL@@QEAAPEAXI@Z) 中被引用
1>TxtContextMenu.obj : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete[](void *)" (??_V@YAXPEAX@Z)
1>TxtShellContextMenu.obj : error LNK2001: 无法解析的外部符号 "void __cdecl operator delete[](void *)" (??_V@YAXPEAX@Z)
1>StdAfx.obj : error LNK2019: 无法解析的外部符号 "void __cdecl `eh vector destructor iterator'(void *,unsigned __int64,int,void (__cdecl*)(void *))" (??_M@YAXPEAX_KHP6AX0@Z@Z),该符号在函数 "public: void * __cdecl ATL::CComTypeInfoHolder::stringdispid::`vector deleting destructor'(unsigned int)" (??_Estringdispid@CComTypeInfoHolder@ATL@@QEAAPEAXI@Z) 中被引用
1>TxtContextMenu.obj : error LNK2001: 无法解析的外部符号 "void __cdecl `eh vector destructor iterator'(void *,unsigned __int64,int,void (__cdecl*)(void *))" (??_M@YAXPEAX_KHP6AX0@Z@Z)
1>TxtShellContextMenu.obj : error LNK2001: 无法解析的外部符号 "void __cdecl `eh vector destructor iterator'(void *,unsigned __int64,int,void (__cdecl*)(void *))" (??_M@YAXPEAX_KHP6AX0@Z@Z)
1>StdAfx.obj : error LNK2001: 无法解析的外部符号 "const type_info::`vftable'" (??_7type_info@@6B@)
1>TxtContextMenu.obj : error LNK2001: 无法解析的外部符号 "const type_info::`vftable'" (??_7type_info@@6B@)
1>TxtShellContextMenu.obj : error LNK2001: 无法解析的外部符号 "const type_info::`vftable'" (??_7type_info@@6B@)
1>atlsd.lib(Externs.obj) : error LNK2001: 无法解析的外部符号 "const type_info::`vftable'" (??_7type_info@@6B@)
1>TxtContextMenu.obj : error LNK2001: 无法解析的外部符号 __CxxFrameHandler3
1>TxtShellContextMenu.obj : error LNK2001: 无法解析的外部符号 __CxxFrameHandler3
1>TxtContextMenu.obj : error LNK2019: 无法解析的外部符号 "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z),该符号在函数 "public: static long __cdecl ATL::CComCreator<class ATL::CComObjectCached<class ATL::CComClassFactory> >::CreateInstance(void *,struct _GUID const &,void * *)" (?CreateInstance@?$CComCreator@V?$CComObjectCached@VCComClassFactory@ATL@@@ATL@@@ATL@@SAJPEAXAEBU_GUID@@PEAPEAX@Z) 中被引用
1>atlsd.lib(AtlDebugAPI.obj) : error LNK2001: 无法解析的外部符号 "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z)
1>atlsd.lib(atlfuncs.obj) : error LNK2001: 无法解析的外部符号 "void * __cdecl operator new(unsigned __int64)" (??2@YAPEAX_K@Z)
1>atlsd.lib(atlcommodule.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>atlsd.lib(atlfuncs.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>atlsd.lib(Allocate.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>atlsd.lib(AtlTraceModuleManager.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>TxtContextMenu.obj : error LNK2019: 无法解析的外部符号 _CrtDbgReportW,该符号在函数 "unsigned int __cdecl ATL::AtlGetDirLen(wchar_t const *)" (?AtlGetDirLen@ATL@@YAIPEB_W@Z) 中被引用
1>atlsd.lib(atlbase.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>atlsd.lib(Externs.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>atlsd.lib(AtlDebugAPI.obj) : error LNK2001: 无法解析的外部符号 _CrtDbgReportW
1>TxtContextMenu.obj : error LNK2001: 无法解析的外部符号 _purecall
1>atlsd.lib(atlcommodule.obj) : error LNK2001: 无法解析的外部符号 memset
1>TxtContextMenu.obj : error LNK2019: 无法解析的外部符号 memset,该符号在函数 "public: __cdecl ATL::CComCriticalSection::CComCriticalSection(void)" (??0CComCriticalSection@ATL@@QEAA@XZ) 中被引用
1>TxtShellContextMenu.obj : error LNK2001: 无法解析的外部符号 memset
1>atlsd.lib(atlbase.obj) : error LNK2001: 无法解析的外部符号 memset
1>atlsd.lib(AtlDebugAPI.obj) : error LNK2001: 无法解析的外部符号 memset
1>atlsd.lib(Externs.obj) : error LNK2001: 无法解析的外部符号 __GSHandlerCheck
1>atlsd.lib(AtlDebugAPI.obj) : error LNK2001: 无法解析的外部符号 __GSHandlerCheck
1>atlsd.lib(AtlTraceModuleManager.obj) : error LNK2001: 无法解析的外部符号 __GSHandlerCheck
1>TxtContextMenu.obj : error LNK2001: 无法解析的外部符号 __GSHandlerCheck
1>TxtShellContextMenu.obj : error LNK2001: 无法解析的外部符号 __GSHandlerCheck
1>atlsd.lib(atlbase.obj) : error LNK2001: 无法解析的外部符号 __GSHandlerCheck
1>atlsd.lib(atltrace.obj) : error LNK2001: 无法解析的外部符号 __GSHandlerCheck
1>atlsd.lib(Externs.obj) : error LNK2001: 无法解析的外部符号 __security_cookie
1>atlsd.lib(AtlDebugAPI.obj) : error LNK2001: 无法解析的外部符号 __security_cookie
1>atlsd.lib(AtlTraceModuleManager.obj) : error LNK2001: 无法解析的外部符号 __security_cookie
1>TxtContextMenu.obj : error LNK2019: 无法解析的外部符号 __security_cookie,该符号在函数 "public: long __cdecl ATL::CAtlModule::UpdateRegistryFromResourceS(unsigned int,int,struct ATL::_ATL_REGMAP_ENTRY *)" (?UpdateRegistryFromResourceS@CAtlModule@ATL@@QEAAJIHPEAU_ATL_REGMAP_ENTRY@2@@Z) 中被引用
1>TxtShellContextMenu.obj : error LNK2001: 无法解析的外部符号 __security_cookie
1>atlsd.lib(atlbase.obj) : error LNK2001: 无法解析的外部符号 __security_cookie
1>atlsd.lib(atltrace.obj) : error LNK2001: 无法解析的外部符号 __security_cookie
1>atlsd.lib(Externs.obj) : error LNK2001: 无法解析的外部符号 __security_check_cookie
1>atlsd.lib(AtlDebugAPI.obj) : error LNK2001: 无法解析的外部符号 __security_check_cookie
1>atlsd.lib(AtlTraceModuleManager.obj) : error LNK2001: 无法解析的外部符号 __security_check_cookie
1>TxtContextMenu.obj : error LNK2019: 无法解析的外部符号 __security_check_cookie,该符号在函数 "public: long __cdecl ATL::CAtlModule::UpdateRegistryFromResourceS(unsigned int,int,struct ATL::_ATL_REGMAP_ENTRY *)" (?UpdateRegistryFromResourceS@CAtlModule@ATL@@QEAAJIHPEAU_ATL_REGMAP_ENTRY@2@@Z) 中被引用
1>TxtShellContextMenu.obj : error LNK2001: 无法解析的外部符号 __security_check_cookie
1>atlsd.lib(atlbase.obj) : error LNK2001: 无法解析的外部符号 __security_check_cookie
1>atlsd.lib(atltrace.obj) : error LNK2001: 无法解析的外部符号 __security_check_cookie
。。。。。。。。。。。。。。。。。。。。。。。。。。
想问一下,在32位下编译的DLL在64位中没能用吧,或者该如何注册,在工作64位下可以通过其他方式加入自己的菜单吗