代码很简单,先贴出代码。
QAxWidget* m_axis;
m_axis = new QAxWidget(this);//this 是QWidget的一个派生类指针
m_axis->setControl(QString::fromUtf8("{745395C8-D0E1-4227-8586-624CA9A10A8D}"));
m_axis->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_axis->setObjectName(QString::fromUtf8("AxisMediaControl"));
程序运行到m_axis->setControl(QString::fromUtf8("{745395C8-D0E1-4227-8586-624CA9A10A8D}"))的时候,程序运行没有报错,但是输出提示有错误,提示是:
:E:CVolumeInXXX::LogWaveInError - 使用的设备标识号已超出本地系统范围。
:E:CVolumeInXXX::EnumerateInputLines - Could not open WaveIn Mapper. mmResult=2
:E:Unable to find any audio input lines
“AXISControlTest.exe”: 已加载“C:\Windows\System32\msxml3.dll”,Cannot find or open the PDB file
AXISControlTest.exe 中的 0x7513c6e3 处最可能的异常: 0xE0000001: 0xe0000001
AXISControlTest.exe 中的 0x7513c6e3 处最可能的异常: 0xE0000001: 0xe0000001
AXISControlTest.exe 中的 0x7513c6e3 处最可能的异常: 0xE0000001: 0xe0000001
AXISControlTest.exe 中的 0x7513c6e3 处最可能的异常: 0xE0000001: 0xe0000001
“AXISControlTest.exe”: 已加载“C:\Program Files\AXIS Communications\AXIS Media Control Embedded\HTTPStreamSourceFilter.ax”,未使用调试信息生成二进制文件。
“AXISControlTest.exe”: 已加载“C:\Windows\System32\msvcp60.dll”,Cannot find or open the PDB file
AXISControlTest.exe 中的 0x7513c6e3 处最可能的异常: Microsoft C++ 异常: 内存位置 0x00129f2c 处的 RegKeyException。
AXISControlTest.exe 中的 0x7513c6e3 处最可能的异常: Microsoft C++ 异常: 内存位置 0x00129f2c 处的 RegKeyException。
AXISControlTest.exe 中的 0x7513c6e3 处最可能的异常: Microsoft C++ 异常: 内存位置 0x00129f2c 处的 RegKeyException。
“AXISControlTest.exe”: 已加载“C:\Windows\System32\cryptsp.dll”,Cannot find or open the PDB file
“AXISControlTest.exe”: 已加载“C:\Windows\System32\rsaenh.dll”,Cannot find or open the PDB file
“AXISControlTest.exe”: 已加载“C:\Windows\System32\RpcRtRemote.dll”,Cannot find or open the PDB file
我尝试修改一下这句话中的注册表,使用了flashplayer的注册表号,也就是它的设备标识号,运行可以通过。个人认为可能是音频或者是视频驱动有问题,重装了一下驱动,还是出现这种错误。提示的是使用的设备标识号已超出本地系统范围,应该是设备标识号无法访问,纠结了几天了,哪儿位大神做过这方面的开发,请指导一下,怎么解决这个问题?
这段代码我是参考
http://www.qtcentre.org/threads/231-Qt-application-with-live-Active-X-camera-feed这里面的代码。