我们的软件是使用DirectShow开发的,需要兼容各种相机设备。
一个用户是使用第三方购买的相机并配有SDK,他的SDK重装系统没有了。我给他发了一份SDK并准备给他安装。
总结下遇到的一些低级错误吧。
前提:
1、SDK中有一个xxx.ax的filter文件和一个yyy.dll文件。
2、电脑是64位系统。我们的软件是32位。
犯错一:我用regsvr32 xxx.ax文件。
错误的点是没有使用全路径,虽然提示注册成功了,实际注册的路径是c:\windows\SysWOW64\xxx.ax,而我并没有把文件拷贝到系统目录中。
后面意识到这个问题后,发现注册后仍然不能使用,提示Error 8007007e: cannot create video capture filter. 这时我想应该是yyy.dll没有找到的原因,所以把xxx.ax和yyy.dll拷贝到了系统目录C:\Windows\System32目录中。
犯错二:文件拷贝到了错误的路径。32位的软件在64位系统中运行,系统文件是在C:\Windows\SysWOW64中,我拷贝到了C:\Windows\System32目录中。
当我把文件拷贝到正确的目录后,发现可以正常创建第三方的filter了。
这两个错误都是很低级的错误,这个问题花了一个小时,真不应该,记录下以免后面忘记了。
参考资料:
SysWOW64:
1. 什么是SysWow64 | Microsoft Docs
2. 关于System32和SysWow64_文三~的博客-CSDN博客_syswow64和system32
安装DirectShow Filter:
1. 如何安装或卸载DirectShow filter_humanzt的博客-CSDN博客
2. How to Register DirectShow Filters - Win32 apps | Microsoft Docs