1

我认为这是非常基本的。今天我正在构建一个静态链接到 ATL 的动态链接项目。在构建它时,它挂在“执行注册”阶段并且没有继续。我可以看到任务管理器中有一个 regsvr32.exe。我猜这个过程是在做注册工作。但它永远不会结束。

所以我取消了构建并重试,然后我有一些未解决的外部符号问题。有人可以向我解释为什么会这样吗?非常感谢你!平台(Windows 7 64, VS 2008)

最好的祝福,

4

2 回答 2

0

regsvr32.exe正在加载您的 DLL,并调用其DllRegisterServer导出的函数。假设它冻结了,您可以使用任务管理器、进程资源管理器或调试器检查它 - 附加到冻结的进程。因此,原因很可能在您的 DLL 中,您需要解决它,使用调试器附加,或者只是使用C:\Windows\syswow64\regsvr32.exe <full path to your DLL>.

并不是说如果您的 DLL 是 32 位的,那么您需要syswow64\regsvr32.exe,而不是system32\regsvr32.exe(否则被调试者将启动一个子进程,该子进程将冻结而不被调试)。

于 2012-08-13T12:33:44.343 回答
0

检查taskmanager,看看传递给regsvr32.exe的参数是什么,通常注册这样的dll被什么东西阻塞,得到什么被阻塞,如果可能的话调试到dllmain。

于 2012-08-13T12:34:42.973 回答