草庐IT

c++ - COM 注册失败,错误代码为 0xC0000005

我正在处理一个包含多个C++COMDll的遗留项目。每次基于调试配置构建解决方案时,构建过程都会为每个COM项目提供错误:Error10errorMSB3073:Thecommand"regsvr32/s/c"D:\*****removedintentionally****_d.dll"echoregsvr32exec.time>".\Debug\regsvr32.trg"echoServerregistrationdone!:VCEnd"exitedwithcode-1073741819.我最近加入了这个项目,所以当我询问它时,我被告知每个人都忽略这些错误,因为解决方案在第二次构建时

c++ - REGSVR32: 模块 "xxxxx.dll"加载失败...找不到相关程序集

我在Windows7x64下注册*.dll时遇到问题。我尝试将*.dll放在C:/Windows/System32和C:/Windows/SysWOW64中,并尝试在提升的命令提示符下注册“regsvr32xxxxx.dll”。我还尝试从一个单独的目录注册它。它响应以下错误:Themodule"xxxxx.dll"failedtoload.Makesurethebinaryisstoredatthespecifiedpathordebugittocheckforproblemswiththebinaryordependent.DLLfiles.Theapplicationhasfail

windows - 注册 comdlg32.dll 获取 Regsvr32 : DllRegisterServer entry point was not found

我有Windows7,64位。我正在尝试使用regsvr32注册一个.dll(comdlg32.dll)。但是我收到一条错误消息,指出已读取dll但未找到DLLRegistryServer入口点。我已经在System32和SysWOW64下运行了命令,并且我已经使用“以管理员身份运行”运行了我的命令。我的旧MSComDlg.CommonDialog组件不再适用于64位。 最佳答案 comdlg32.dll不是COMDLL,无法注册。您自己确认这一点的一种方法是运行此命令:dumpbin/exportscomdlg32.dll您会看到

c++ - 运行 regsvr32.exe 时,带有线程句柄的 WaitForSingleObject 卡住

我有线程A正在创建另一个线程B,线程A正在等待使用WaitForSingleObject等待线程B死亡。问题是,即使线程B从线程的“thread_func”返回,线程A也没有收到信号!。我知道这是因为我在thread_func(线程B的主要函数)的末尾添加了跟踪(OutputDebugString),我可以看到线程B完成了它的执行,但线程A永远不会从WaitForSingleObject中出来。现在,我还必须补充一点,这段代码在一个COM对象中,并且当我调用regsvr32.exe时会发生上述情况(它卡住了!),所以我相信线程A来自DLLMain.知道为什么线程A没有收到信号吗?!?!

windows - RegSvr32.exe的/n和/i参数有什么区别?

要注册COM服务器,我们可以在提升模式下运行:regsvr32.execom.dll要执行每用户注册,在用户帐户中执行:regsvr32.exe/n/i:usercom.dllregsvr32.exe支持这些参数:/u-Unregisterserver/i-CallDllInstallpassingitanoptional[cmdline];whenusedwith/ucallsdlluninstall/n-donotcallDllRegisterServer;thisoptionmustbeusedwith/i/s–Silent;displaynomessageboxes(added

windows - 如何调试regsvr32编译后DLL注册异常?

我正在使用VisualStudio2008(在Windows2003Server/32位上)编译一个库,在生成DLL后,“自定义构建步骤”->“常规”执行命令行:regsvr32/s/c"($TargetPath)"产生异常:Anunhandledwin32exceptionoccurredinregsvr32.exe[212].这会引发一个调试session,其中显示的信息非常少。在cmd窗口中从命令行运行regsvr32会引发异常(尽管末尾的数字不同)。感谢任何指点! 最佳答案 在调试器中运行dll,将regsvr32设置为调试

windows - regsvr32 在当前文件夹中找不到dll

当我使用“regsvr32foo.dll”时,我得到一个“指定的模块不能发现”错误。错误是因为regsvr32找不到文件,即使它是当前文件夹。我已经指定了完整路径,还是不行。有什么想法吗???? 最佳答案 如果foo.dll对bar.dll有依赖性并且实际上是bar.dll找不到.尝试使用MSVC中的depends.exe检查foo.dll的依赖项并查看是否缺少任何项。另一种选择是下载并运行FileMon.然后再次运行regsvr32并查看它找不到哪个文件/模块。这绝对应该追踪到它。 关

c++ - 使用 64 位 regsvr32 注册 32 位 DLL

考虑以下理解32位进程无法加载64位dll,反之亦然。用于注册/注销DLLregsvr32在通过将目标DLL加载到其地址空间后调用入口点DllRegisterServer/DllUnregisterServer>加载库。在64位系统上,regsvr32的32位版本位于C:\Windows\SysWOW64但是在我的2008R2Box上,我能够通过64位regsvr32注册一个32位dll。这怎么可能?我错过了什么吗?我想在屏幕截图中突出显示的示例是弹出对话框的最后一个示例。 最佳答案 这应该可以准确解释它是如何发生的:(来源:ala

windows - RegSvr32 退出代码文档?

我使用RegSvr32.exe注册了一个COM服务器并获得了下一个退出代码:0-正确注册正常DLLCom服务器时3-当尝试注册伪造的DLLCom服务器时(简单的文本文件重命名为.DLL4-当尝试注册简单的DLL,而不是ComServer时问题:我在哪里可以找到所有可能的退出代码及其含义的官方(或非官方但很好的)描述?在互联网上搜索没有给我结果,所以我找到了thistopic哪里写的退出代码与Windows系统错误代码相同,但我不明白为什么在尝试注册错误文件时我获得代码=3=ERROR_PATH_NOT_FOUND,以及在注册非COMDLL时-4=ERROR_TOO_MANY_OPEN_

c# - RegAsm.exe 和 regsvr32 有什么区别?如何使用 regsvr32 生成 tlb 文件?

谁能告诉我regsvr32和RegAsm有什么区别?我的Dll是用C#编写的,那么如何将类导入c++? 最佳答案 regsvr32将加载库并尝试从该库调用DllRegisterServer()。它不关心DllRegisterServer()实际做了什么——它只是调用该函数并检查返回值。您可以使用它在非托管DLL中注册COM服务器。它无法生成.tlb文件。regasm将向COM公开的.NET程序集注册为COM服务器。您将它用于.NET程序集。它可以仅在给定程序集的情况下生成.tlb文件-它检查存储在程序集中的类型信息并将COM公开的实