我有一个directShow过滤器: MyFilter.ax
当我尝试向MyFilter.ax实用程序注册Regsvr32时,它不会给任何错误或消息(成功或失败)。但是过滤器没有注册。
Regsvr32实用程序对我的其他过滤器很好。
为什么Regsvr32不给出任何成功或失败消息?如何调试Regsvr32失败-成功?任何用于注册directshow过滤器的其他实用工具都可以提供有意义的消息?
谨致问候
更新:
我在虚拟机上安装了干净的win7操作系统。然后再次尝试register.Fail,而不需要来自regsvr32的消息响应。
然后,但是在虚拟机上再次安装一个干净的win7操作系统。然后进行所有更新,。在我进行了更新之后,regsvr32工作并安装了我的过滤器……我不知道regsvr32失败的原因以及修复它的更新类型。还是真的是更新的问题..。
发布于 2011-09-07 18:06:10
可以发生并显示上述行为的是,在过滤器的某个地方,您处于死循环,或无限等待,因此DLL的DllRegisterServer永远不会返回。在本例中,您将能够看到,每次尝试regsvr32任务管理器时,都会向您显示一个运行进程的regsvr32.exe,无论是否消耗了CPU。
如果这就是你所拥有的,你会想要附加调试器,看看你到底在哪里有死循环.
发布于 2011-08-11 07:11:25
检查您是否使用regsvr32和/s选项调用
发布于 2011-08-11 17:28:41
如果是可以自己实现像regsvr32这样的应用程序,只需加载目标dll并调用函数DllRegisterServer即可。您可以在C#中实现它,例如使用以下p/invoke声明:
[DllImport("yourdll.ax")]
private static extern int DllRegisterServer();这样你就可以缩小问题范围了。
更新:
我会尝试安装Windows7PlatformSDK并编译您的DirectShow过滤器。我以前在Windows7中见过与旧版本的DirectX的兼容性问题(甚至缺少dlls),尽管我没有保留这个引用(如果有人阅读了这个引用,请发布它)。
https://stackoverflow.com/questions/7017386
复制相似问题