Я получил много ошибок из файлов заголовков, предоставленных SAPI 5.1, и не могу понять, как решить эти проблемы.
Ниже приведена простая программа преобразования текста в речь из Как в Microsoft Video Video Presentation .Докладчик сказал, что если вы установили самые обновленные пакеты, у вас не возникнет проблем при компиляции этой программы.Но он использует Video Studio 2005;по-видимому, «наиболее обновленный» относится несколько лет назад, когда была представлена презентация.
Я думаю, что эти ошибки вызваны несовпадением версий.Я использую Windows XP SP3.У меня есть Visual Studio 2008 SP1, Visual Studio 2008 SDK 1.1, Windows SDK v6.0A (поставляются с VS2008), Windows SDK v7.0 и SAPI 5.1.Может кто-нибудь помочь мне разобраться с этими проблемами?
TTSdemo.cpp
#include <windows.h>
#include <atlbase.h>
#include <sapi.h>
#include <sphelper.h>
#include <string>
#include <iostream>
int wmain(int argc, wchar_t **argv)
{
int i;
ULONG n;
HRESULT hr;
std::wstring args;
CComPtr<ISpObjecToken> token;
CComPtr<ISpVoice> tts;
CoInitialize(0);
for (i = 1, args = L""; i < argc; i++ )
{
args.append( argv[i] );
args.append( L" " );
}
tts.CoCreateInstance(CLSID_SpVoice);
hr = SpGetDefaultTokenFromCategoryId(SPCAT_VOICES, &token, FALSE);
hr = tts->SetVoice(token);
if (args.length() == 0 )
std::wcout << L"Enter @<text file name> or <text to speak>" << STD::endl;
else if ( args(0) == L'@' )
tts->Speak(args.c_str() + 1, SPF_IS_FILENAME | SPF_ASYNC, &n);
else
tts->Speak(args.c_str(), SPF_IS_XML | SPF_ASYNC, &n);
tts->WaitUntilDone(-1);
tts.Release();
token.Release();
CoUninitialize();
return 0;
}
Ошибки компиляции
c: \ программные файлы \ microsoft speech sdk 5.1 \ include \ spdebug.h (274): предупреждениеC4996: 'wcscpy': эта функция или переменная может быть небезопасной.Попробуйте вместо этого использовать wcscpy_s.Чтобы отключить устаревание, используйте _CRT_SECURE_NO_WARNINGS.Для получения подробной информации см. Интерактивную справку.
c: \ program files \ microsoft visual studio 9.0 \ vc \ include \ string.h (252): см. Объявление 'wcscpy'
c: \ programfiles \ microsoft speech sdk 5.1 \ include \ sphelper.h (769): ошибка C4430: отсутствует указатель типа - предполагается использование int.Примечание. C ++ не поддерживает default-int
c: \ program files \ microsoft speech sdk 5.1 \ include \ sphelper.h (1419): ошибка C4430: отсутствует спецификатор типа - предполагается, что int.Примечание: C ++ не поддерживает default-int
c: \ program files \ microsoft speech sdk 5.1 \ include \ sphelper.h (2373): ошибка C2065: 'psz': необъявленный идентификатор
c: \ program files \ microsoft speech sdk 5.1 \ include \ sphelper.h (2559): ошибка C2440: «инициализация»: невозможно преобразовать из «CSpDynamicString» в «SPPHONEID *». Не доступен оператор преобразования, определенный пользователем, который может выполнить этопреобразование или оператор не может быть вызван
c: \ программные файлы \ microsoft speech sdk 5.1 \ include \ sphelper.h (2633): ошибка C2664: 'wcslen': невозможно преобразовать параметр 1 из 'SPPHONEID *'to 'const wchar_t *' Указанные типы не связаны;преобразование требует reinterpret_cast, приведение в стиле C или приведение в стиле функции