Как исправить ошибки компилятора в заголовочных файлах SAPI 5.1 - PullRequest
1 голос
/ 29 августа 2011

Я получил много ошибок из файлов заголовков, предоставленных 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 или приведение в стиле функции

1 Ответ

2 голосов
/ 02 июня 2012

Пожалуйста, используйте "\Program Files\Microsoft SDKs\Windows\v6.0A" или 7.0 или 7.0A, какие бы последние версии не были доступны на вашем компьютере.

Имеются файлы заголовков SAPI DLL и libs +, совместимые с VS2008

Наслаждайтесь.

...