VS2005下调用MS Speech API 5.1, 在添加“sphelper.h”头文件出现的问题,及解决方法

原创 2007年09月17日 12:35:00

在利用微软的SAPI开发语音合成程序,当添加头文件#include "sphelper.h"时出现了类似下面的error和warning: 

 

1>c:/program files/microsoft speech sdk 5.1/include/spdebug.h(274) : warning C4996: 'wcscpy' was declared deprecated
1> c:/program files/microsoft visual studio 8/vc/include/string.h(250) : see declaration of 'wcscpy'
1> Message: 'This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(89) : warning C4267: 'initializing' : conversion from 'size_t' to 'ULONG', possible loss of data
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(150) : warning C4267: 'return' : conversion from 'size_t' to 'unsigned int', possible loss of data
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(169) : warning C4267: 'initializing' : conversion from 'size_t' to 'ULONG', possible loss of data
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(226) : warning C4267: 'initializing' : conversion from 'size_t' to 'ULONG', possible loss of data
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(227) : warning C4267: 'initializing' : conversion from 'size_t' to 'ULONG', possible loss of data
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(334) : warning C4267: 'initializing' : conversion from 'size_t' to 'ULONG', possible loss of data
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(769) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(769) : warning C4267: 'initializing' : conversion from 'size_t' to 'const int', possible loss of data
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(772) : warning C4267: 'initializing' : conversion from 'size_t' to 'ULONG', possible loss of data
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(1419) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(2373) : error C2065: 'psz' : undeclared identifier
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(2544) : warning C4267: '+=' : conversion from 'size_t' to 'ULONG', possible loss of data
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(2559) : error C2440: 'initializing' : cannot convert from 'CSpDynamicString' to 'SPPHONEID *'
1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>c:/program files/microsoft speech sdk 5.1/include/sphelper.h(2633) : error C2664: 'wcslen' : cannot convert parameter 1 from 'SPPHONEID *' to 'const wchar_t *'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

 

一开始,始终觉得是自己程序的问题,可找了半天还是没有找到原因,在网上搜索了一下,发现有不少网友曾遇到此类问题,可始终没有找到很好的解决办法。有位网友提出在vc6下下做个dll,然后放到vs2005下去调用,此方法不失为一个好方法。可还是不甘心,觉得太麻烦!继续搜索,终于在MS的论坛上发现一篇帖子是针对这个问题的,其中有位名叫Pete Baron 的网友提出了解决办法,个人觉得此方法比较方便实用,在此提供,以方便其他好友参考:

I'm not sure if these steps 'fix' the errors, but they permit the code to compile (honestly, I couldn't be bothered to try and decode the awful code in that file so I just used best-guess to what was intended in each case).  I didn't test speech-to-text, but the text-to-speech will definitely work correctly.

1) line 2560
    SPPHONEID* pphoneId = (SPPHONEID*)((WCHAR *)dsPhoneId);

2) line 2634
    pphoneId += wcslen((const wchar_t *)pphoneId) + 1;

3) line 2372 and 2373
        const WCHAR *psz;
        for (psz = (const WCHAR *)lParam; *psz; psz++) {}

4) add to the top of the file to prevent all the other errors...
#pragma warning( disable : 4430 )

I also added another line to prevent a stream of 'deprecated function' warnings
#pragma warning( disable : 4996 )



VC 下Microsoft Speech SDK 5.1 开发小结

1.首先开发得需要Microsoft Speech SDK 5.1的支持,以下是下载地址 http://www.microsoft.com/downloads/en/details.aspx?Fam...
  • zcj331
  • zcj331
  • 2014年04月11日 13:25
  • 572

VS2005调用MS Speech API 5.1 sphelper.h出现的问题及解决方法

文件:sphelper.h 初次接触speech sdk,在用sphelper.h中的文件是出现编译错误,看来原版本还不支持vs2005,做一下改动可以暂时解决问题 运行后报错: 依次修改:  li...
  • GIS_wudi
  • GIS_wudi
  • 2011年08月03日 10:01
  • 1210

VC 下Microsoft Speech SDK开发语音识别

转自VC 下Microsoft Speech SDK开发语音识别 分类: vc/c++ 2011-12-02 18:18 824人阅读 评论(0) 收藏 举报 microso...
  • worldy
  • worldy
  • 2013年12月15日 19:15
  • 2748

VC 下Microsoft Speech SDK5.1开发小结

VC 下Microsoft Speech SDK 5.1 开发小结 1.首先开发得需要Microsoft Speech SDK 5.1的支持,以下是下载地址 http://www.microsof...
  • wiserstar
  • wiserstar
  • 2011年11月24日 16:34
  • 3985

sphelper.h编译错误解决方案

SAPI 包含sphelper.h编译错误解决方案 【转】SAPI 包含sphelper.h编译错误解决方案 在使用Microsoft Speech SDK 5.1开发语音识别程...
  • BelieveNow_NotFuture
  • BelieveNow_NotFuture
  • 2016年08月12日 14:18
  • 409

VS2005中添加头文件路径办法

VS2005中添加头文件路径办法: 项目-----XXX属性-----配置属性-----C/C++------常规,在”附加包含目录“的右边单击,即可输入头文件路径,也可点击后面的...按钮,手动选...
  • finewind
  • finewind
  • 2012年10月12日 14:04
  • 3999

一个简单的 Microsoft Speech SDK 5.1 例子

刚刚从 Microsoft 网站下栽了 Speech SDK 5.1 和中日文发声补丁,参考 Speech SDK文档写了几个小程序,尽管我也是刚刚接触 Speech若干小时的初学者,还是拿出来共享吧...
  • ruanjian2006
  • ruanjian2006
  • 2007年12月02日 00:59
  • 1192

C#基于Microsoft Speech SDK Version 5.1 的开发(语音)

//Microsoft Speech SDK Version 5.1             #endregion             private SpeechLib.SpSharedR...
  • zhenhua10
  • zhenhua10
  • 2011年11月29日 22:10
  • 1623

使用微软Speech SDK 5.1(SAPI 5.1)语音开发包介绍

微软语音识别分两种模式:文本识别模式和命令识别模式.此两种模式的主要区别,主要在于识别过程中使用的匹配字典不同.前者使用的是通用字典,特点是内容多,覆盖的词汇量大,字典由sdk提供.适用于没有预定目标...
  • daocaorencrl
  • daocaorencrl
  • 2012年08月16日 09:02
  • 4106

Microsoft Speech SDK5.1 语音识别

1.首先开发得需要Microsoft Speech SDK的支持,以下是下载地 http://download.microsoft.com/download/speechSDK/SDK/5.1/WX...
  • pamchen
  • pamchen
  • 2012年08月12日 08:55
  • 11970
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS2005下调用MS Speech API 5.1, 在添加“sphelper.h”头文件出现的问题,及解决方法
举报原因:
原因补充:

(最多只允许输入30个字)