我有一个使用脚本构建的 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/