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

5
我正在使用Visual Studio 2008(在Windows 2003服务器/32位系统上)编译一个库,DLL生成后,“自定义构建步骤” ->“常规”会执行一个命令行:

regsvr32 /s /c "($TargetPath)"

这会生成异常:

在regsvr32.exe [212]中发生未处理的Win32异常。

这会弹出一个调试会话,但提供的信息非常有限。

在cmd窗口中运行regsvr32命令也会引发异常(尽管结尾数字不同)。

如果您有任何指针,请告知!


异常信息末尾方括号中的数字是regsvr32.exe的PID(进程ID)。 - amolbk
1个回答

10

在调试器中运行dll,将regsvr32设置为调试目标。

您需要在DllRegisterServer函数中设置断点。


呵呵,我觉得那应该很明显啊! :) - leppie
@leppie: :-) 不是对我说的!我本来以为自动调试会显示相同的信息,但实际上并没有。 - Peter K.
@gbjbaanb 谢谢!这显示了更多的信息...但由于某种原因,DllRegisterServer函数似乎没有被调用。 - Peter K.
如果它没有被调用,你可能没有调试“正确”的dll。在regsvr32和工作目录设置中传递完整路径。 - gbjbaanb
@gbjbaanb 非常感谢!看起来发生的情况是 DLL 包含另一个库,该库执行一些静态初始化。抛出异常的地方是在静态初始化中。DLL 入口点是 _DllMainCRTStartup。 - Peter K.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接