我在 Visual Studio 2010 中遇到一个奇怪的错误...
我在 VS 2010 Ultimate 上使用 Kinect for Windows SDK v1.8,用于使用 MS Kinect 的语音识别器程序。
就像示例 SpeechBasics(可在 Kinect 开发者工具包浏览器上提供)中所解释的那样,在列出默认系统包含和库目录之前,我将具体的 VC++ 包含和库路径添加到我的项目属性中。
但是当我构建解决方案时,出现以下错误:
CKinect_Squeletton.obj:错误LNK2001:无法解析的外部符号_SPDFID_WaveFormatEx CKinect_Squeletton.obj:错误 LNK2001:无法解析的外部符号 _CLSID_SpStream CKinect_Squeletton.obj:错误 LNK2001:无法解析的外部符号 _CLSID_SpInprocRecognizer CKinect_Squeletton.obj:错误 LNK2001:无法解析的外部符号 _CLSID_SpObjectTokenCategory
构建失败。
我已经检查了所有包含文件、所有项目属性。我做了很多研究,并测试了许多响应的可能性,但我没有找到针对我的问题的响应......
我尝试过清理解决方案,使用 x64 目标架构进行构建,但这并不总是有效。
就像评论中建议的那样,我检查了社交 MSDN 上的链接
我已经解决了一些错误,但不是全部使用
__uuidof(SpStream)
代替 CLSID_SpStream
,以及 __uuidof(SpInprocRecognizer)
代替 CLSID_SpInprocRecognizer
。
但是我在我的代码中没有找到
CLSID_SpObjectTokenCategory
,我只有
ISpObjectToken *pEngineToken = NULL;
hr = SpFindBestToken(SPCAT_RECOGNIZERS,L"Language=40C;Kinect=True",NULL,&pEngineToken);
我无法用
__uuidof(SpObjectTokenCategory)
替换它。
另外,我总是不知道如何解决该错误
CKinect_Squeletton.obj: error LNK2001: unresolved external symbol _SPDFID_WaveFormatEx
我在项目+属性、链接器、输入中添加了 sapi.lib,我也尝试使用
#pragma comment(lib, "sapi.lib")
我的问题已经解决了!
我在 Windows 7 64 位上工作,并且安装了 MS Speech Platform SDK 11 x64。
但是要使用 x86 目标架构进行构建,我必须安装并使用 MS Speech Platform SDK 11 x86,并在我的项目属性中指定 x86 sapi lib 的路径!
当我尝试使用 x64 目标架构进行构建时,编译器给了我错误,因为我在项目中包含的其他特定库适用于 x86 架构...
抱歉,也许这个解决方案有一天会对某人有所帮助!