我想在64位Windows的Visual c + +中实现虚拟相机应用程序。我从这里开始了代码:tmhare.mvps.org/downloads/vcam.zip,它使用DirectShow过滤器模拟视频捕获设备。它适用于32位窗口,但不适用于64位窗口。我修改了Visual C++项目如下:visual c + +虚拟相机应用程序不能在64位窗口上工作
1) changed the platform to x64 and recompiled the dll, linking in the 64-bit version of strmbase.lib 2) changed preprocessor definitions to WIN64,_WIN64 from WIN32,_WIN32; 3) Recompiled the library and registered the dll using C:\Windows\system32\regsvr32.exe
成功的DLL寄存器和注册表编辑器显示
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位窗口。
我在做什么错?我知道Win64在64位应用程序中有HKEY_LOCAL_MACHINE \ Software \ Classes \ CLSID {guid},在32位应用程序中有HKEY_LOCAL_MACHINE \ Software \ Wow6432Node,但由于我正在将我的代码编译为64位应用程序,因此在我看来它的钥匙被放置在注册表的正确部分。是否有可用于64位窗口的DirectShow虚拟相机过滤器实现(我只能找到一个适用于32位窗口的实例)?
#2以上:我在Visual C++项目属性中设置预处理器定义,而不是在代码中。无论如何,这一点似乎并不重要 - 正如你所说的,主要问题是我需要将虚拟摄像机注册为32位的dll,如果我想让Skype提取它的话。我试着这样做,并确认我的相机在Skype中显示。谢谢你的帮助! – user1008890