gpt4 book ai didi

visual-c++ - 调试 DLLRegisterServer

转载 作者:行者123 更新时间:2023-12-04 04:27:33 25 4
gpt4 key购买 nike

我有一个使用脚本构建的 COM DLL。没有可用的 Visual Studio 项目。当我使用命令 regsvr32 "c:\windows\system32\dllname.dll"注册 dll 时,没有显示任何消息。

我在函数 DllRegisterServer 和 DllMain 中添加了一个 DebugBreak() 以期望显示调试对话框。然而什么也没发生。

DLL 预期的条目不会添加到注册表中。

关于正确注册 DLL 可能缺少什么以及为什么不显示消息的任何建议。

我该如何调试。

最佳答案

DebugBreak 在调试器下中断,使未被调试的进程崩溃。

您需要在 C++ 项目设置、调试下设置 Visual Studio,以便它使用您的 DLL 启动 C:\Windows\system32\regsvr32.exe,即 "$(TargetPath)" 或明确的完整路径。开始调试,你的断点就会被命中。

请注意,在 64 位操作系统中调试 32 位 DLL 需要 C:\Windows\syswow64\regsvr32.exe。

UPD。没有可用的 Visual Studio 项目这一事实并不是真正的障碍。一个使用正确命令行启动调试 session 的假项目将正常工作。

除此之外,如果您仍然能够更新源代码,您可以在 DllRegisterServer 中添加一个 MessageBox,尤其是。而不是DebugBreak,开始COM注册,弹出消息框,然后附加Visual Studio调试器(不需要VS项目),设置断点,然后关闭消息框让执行继续和到达兴趣点。

关于visual-c++ - 调试 DLLRegisterServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9597129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com