【发布时间】:2011-10-22 20:26:24
【问题描述】:
我正在尝试在 Visual C++ 中为 64 位 Windows 实现一个虚拟相机应用程序。我从这里的代码开始:tmhare.mvps.org/downloads/vcam.zip,它使用 DirectShow 过滤器模拟视频捕获设备。它适用于 32 位窗口,但不适用于 64 位窗口。我修改了Visual C++项目如下:
1)将平台改为x64并重新编译dll,链接在64位版本的strmbase.lib中 2) 将预处理器定义从 WIN32,_WIN32 更改为 WIN64,_WIN64; 3) 重新编译库并使用 C:\Windows\system32\regsvr32.exe 注册 dlldll 注册成功,regedit 在
中显示了我的虚拟相机的三个键 HKEY_CLASSES_ROOT\CLSID\{860BB310-5D01-11D0-BD3B-00A0C911CE86}\Instance\{8E14549A-DB61-4309-AFA1-3578E927E933}, HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{860BB310-5D01-11D0-BD3B-00A0C911CE86}\Instance\{8E14549A-DB61-4309-AFA1-3578E927E933}, HKEY_CLASSES_ROOT\CLSID\{8E14549A-DB61-4309-AFA1-3578E927E933}\InprocServer32但是,Skype 和 Windows Live Messenger 在 64 位 Windows 上都看不到摄像头。
我究竟做错了什么?我知道 Win64 有 HKEY_LOCAL_MACHINE\Software\Classes\CLSID{guid} 用于 64 位应用程序和 HKEY_LOCAL_MACHINE\Software\Wow6432Node 用于 32 位应用程序,但由于我将我的代码编译为 64 位应用程序,在我看来它的密钥被放置在注册表的正确部分。是否有适用于 64 位窗口的 DirectShow 虚拟相机滤镜实现我可以用作示例(我只找到了一个适用于 32 位窗口的)?
【问题讨论】:
标签: visual-c++ directshow win64