Visual Studio 2010:错误 LNK2001:无法解析的外部符号:sapi.h 和 Microsoft Speech SDK for KINECT

问题描述 投票:0回答:2

我在 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 目标架构进行构建,但这并不总是有效。

  • 为什么我会出现这个问题?
c++ visual-studio-2010 sapi lnk2001
2个回答
0
投票

就像评论中建议的那样,我检查了社交 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")


0
投票

我的问题已经解决了!

我在 Windows 7 64 位上工作,并且安装了 MS Speech Platform SDK 11 x64。

但是要使用 x86 目标架构进行构建,我必须安装并使用 MS Speech Platform SDK 11 x86,并在我的项目属性中指定 x86 sapi lib 的路径!

当我尝试使用 x64 目标架构进行构建时,编译器给了我错误,因为我在项目中包含的其他特定库适用于 x86 架构...

抱歉,也许这个解决方案有一天会对某人有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.