Visual Studio 2010: ошибка LNK2001: неразрешенный внешний символ: sapi.h и Microsoft Speech SDK для KINECT

Я столкнулся со странной ошибкой в ​​Visual Studio 2010...

Я работаю с Kinect для Windows SDK v1.8 на VS 2010 Ultimate для программы распознавания речи, использующей MS Kinect.

Как поясняется в примере SpeechBasics (доступном в браузере Kinect Developer Toolkit), я добавил особенности включения VC++ и пути к библиотекам в свойства моего проекта, прежде чем перечислять каталоги системных включений и библиотек по умолчанию.

Но когда я создаю решение, я получаю следующие ошибки:

Ckinect_squeletton.obj: ошибка lnk2001: неразрешенный внешний символ _spdfid_waveformatex ckinect_squeletton.obj: неразрешенный внешний символ _clsid_spstream ckinect_squeletton.obj: ошибка lnk2001: неразрешенный внешний символ _clsid_squeletton.obj: ошибка lnk2001: неразрешенный внешний символ _clsid_spobjectTokencegle

сборка не удалась.

Я проверил все включаемые файлы, все свойства проекта. Я провел много исследований и проверил множество вариантов ответа, но не нашел ответа на свою проблему...

Я пробовал очистить решение, собрать его с целевой архитектурой x64, но это не всегда работает.

  • Почему у меня эта проблема?

person Jerome M.    schedule 05.04.2014    source источник
comment
Вы проверили social.msdn.microsoft.com/Forums/en-US/ ?   -  person mockinterface    schedule 05.04.2014
comment
Проект + Свойства, Линкер, Ввод. Вам нужно добавить sapi.lib в параметр Дополнительные зависимости. Или используйте #pragma comment(lib, "sapi.lib") в исходном коде.   -  person Hans Passant    schedule 05.04.2014


Ответы (2)


Как было предложено в комментарии, я проверил ссылка на социальную сеть 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 в Project + Properties, Linker, Input, а также попробовал с #pragma comment(lib, "sapi.lib")

person Jerome M.    schedule 05.04.2014

Я решил свою проблему!

Я работаю на Windows 7 64bit, и я установил MS Speech Platform SDK 11 x64.

Но для сборки с целевой архитектурой x86 мне пришлось установить и использовать MS Speech Platform SDK 11 x86 и указать в свойствах моего проекта путь для x86 sapi lib!

Компилятор выдал мне ошибки, когда я пытался построить с целевой архитектурой x64, потому что другие конкретные библиотеки, которые я включил в проект, предназначены для архитектуры x86...

Извините, и, возможно, это решение поможет кому-то однажды!

person Jerome M.    schedule 06.04.2014