Microsoft Windows UVC扩展单元示例编译疑难解答

时间:2014-03-16 10:42:32

标签: c++ windows usb directshow wdk

我最近一直试图让UVC(USB视频类)扩展单元启动并运行。我确实取得了一些进展(通过来自另一个论坛的消息获得了vidcap_i.c),但我还没有能够由于编译错误而经历,我希望我能在这里获得一些帮助。 我创建了所有必需的文件,我在Microsoft网站上的示例指导,除了示例应用程序。

它们的内容与UVC样本链接的内容相同。

*注意:我对#34;来自WIA的Copy Extend.def扩展样本并编辑它的行感到有些困惑。 Uvcxuplugn.def应该包含"。我希望我能正确使用它 - 我已将extend.def文件从WDK samples目录复制到 c:\ xu目录,编辑文件,添加必要的内容并将其保存为Uvcuplugn.def文件。

使用Build环境构建之后,这是编译的输出:

C:\ xu> Build -cZg

BUILD:为AMD64编译和链接

构建:开始时间:

BUILD:检查要编译的文件的c:\ xu目录。

c:\xu Invalidating OACR warning log for 'root:amd64chk'

BUILD:在c:\ xu目录中构建生成的文件

为root用户配置OACR:amd64chk' -

运行MIDL - interface.idl

BUILD:编译c:\ xu目录

编译 - interface_i.c

编译 - vidcap_i.c

编译 - uvcxuplgn.cpp

目录c:\ xu

中的

1>错误

1> c:\ xu \ xuproxy.h(69):错误C2017:非法转义序列

1> c:\ xu \ xuproxy.h(71):错误C2059:语法错误:' __ uuidof'

1> c:\ xu \ xuproxy.h(71):错误C2017:非法转义序列

1> c:\ xu \ xuproxy.h(71):错误C2332:' struct' :缺少标签名称

1> c:\ xu \ xuproxy.h(71):错误C2011:'' :' enum'类型重新定义

1> c:\ xu \ uvcxuplgn.cpp(7):错误C2143:语法错误:缺少&#39 ;;'之前' {'

1> c:\ xu \ uvcxuplgn.cpp(7):错误C2447:' {' :缺少函数头(旧式  正式名单?)

1> c:\ xu \ uvcxuplgn.cpp(31):错误C2065:' ObjectMap' :未声明的标识符

编译 - stdafx.cpp

编译 - xuproxy.cpp

建筑图书馆 - objchk_win7_amd64 \ amd64 \ uvcxuplgn.lib

1>链接:错误LNK1181:无法打开输入文件&c; \ xu \ objchk_win7_amd64 \ amd64 \ uv cxuplgn.obj'

BUILD:编译错误:不链接c:\ xu目录

建立:完成时间:

构建:完成

12 files compiled - 1 Warning - 8 Errors
1 library built - 1 Error

无论目标是什么(x86,x64,ia64)

,我都会得到相同的错误

现在,让我们逐一审核错误,从最后一个开始:

LNK1181->对这个错误一无所知。我已经完成了构建的清理工作而没有帮助

一切。但这可能是最容易解决的错误,希望你能给我一个

该主题的领导者。

uvcxuplgn.cpp,第7行,有问题的语法是:BEGIN_OBJECT_MAP(ObjectMap)。

根据Microsoft的文档(http://msdn.microsoft.com/en-us/library/10fb0d3e(v=vs.90).aspx),该指令在atlcom.h中定义,包含在内  在文件中,所以我对这个错误的原因感到很困惑。

最后一个错误与最后5行扩展单元代理头文件有关(由于错误而无法在此处发布代码 - 请检查此页面(http://msdn.microsoft.com/en-us/library/windows/hardware/ff568134(v=vs.85).aspx

再一次,不知道,为什么它不应该编译。希望我可以在这个问题上获得一些领先优势 对不起,很长的帖子,希望你能帮助我(可能还有很多其他人)为这个Windows UVC扩展单元主题而苦恼

1 个答案:

答案 0 :(得分:0)

首先,您必须始终查看发生的第一个错误。其他人经常跟随错误。所以只需删除第69行和xuproxy.h第71行中的错误转义序列()。

仅发生链接错误,因为编译器之前无法编译.cpp文件,因此缺少目标文件。