实在是搞不懂了,VC2005 MFC项目出现异常!!!

draculamx 2016-11-03 12:21:54
最近一个项目需要用到朗读功能,开发环境WIN7 64+VC2005

为了排除其他干扰,我直接新建了一个MFC对话框程序,什么都没动,就在对话框重载了OnInitDialog()函数
然后头文件里加上:

#include "sapi.h"
#include "sphelper.h"
#pragma comment(lib, "sapi.lib")


当然,还要设置头文件和LIB文件的包含路径如下:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\lib

OnInitDialog()函数中加入如下代码,然后运行

ISpVoice * pVoice = NULL;
//init COM
if (FAILED(CoInitialize(NULL)))
{
MessageBox(_T("Error to intiliaze COM") );
return FALSE;
}
//init SAPI
HRESULT hr = CoCreateInstance(CLSID_SpVoice, NULL,CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice);

if( SUCCEEDED( hr ) )
{
hr = pVoice->Speak(_T("Test"), 0, NULL);
pVoice->Release();
pVoice = NULL;
}
//release COM
CoUninitialize();


运行以后,正常朗读了文本内容“Test”,程序也没有崩溃,但是VC2005的对话框里,却弹出如下两个信息:

MfcTest.exe 中的 0x7604c52f 处最可能的异常: 0x000006BA: RPC 服务器不可用。
MfcTest..exe 中的 0x7604c52f 处最可能的异常: 0x0000071A: 远程过程调用被取消。

我尝试做了如下事情:
1.到调试菜单,把异常选项重置
2.打开RPC服务

但这都无效,后来我又用VC2015,同样的新建工程,同样的代码,一样的输出信息。。
关于这段朗读的代码,我在网上找了很多,完全一模一样的东西

现在的问题是,虽然VC2005和VC2015都弹出了这两条信息,但是程序正常运行,没有崩溃。但我有强迫症,不能接受这个。。。

有没有人知道这是为什么。。。
...全文
222 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
draculamx 2016-11-03
  • 打赏
  • 举报
回复
这个代码也不复杂,如果你们能在你们的机器上运行一下,VS什么版本不重要,看是否也弹出和我一样的调试信息 这个调试信息,会影响程序的正常运行吗?因为我的程序运行过程中,没有崩溃,编译器也没有中断进入调试状态
draculamx 2016-11-03
  • 打赏
  • 举报
回复
引用 4 楼 chengbar 的回复:
可能com库内部RPC调用失败,内部的问题,有可能你是用的破解版 正版的话可以咨询com开发商,寻求支持,另外商业库一般有Demo吧,照着demo画瓢就是了
这个用的是SAPI,是微软提供的,windows7 sdk中带有这个部分,不是第三方的com。。。。
draculamx 2016-11-03
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
请看清楚我在楼顶写的内容,程序没有崩溃,没有弹出调试窗口!!!!
sevancheng 2016-11-03
  • 打赏
  • 举报
回复
可能com库内部RPC调用失败,内部的问题,有可能你是用的破解版 正版的话可以咨询com开发商,寻求支持,另外商业库一般有Demo吧,照着demo画瓢就是了
赵4老师 2016-11-03
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
三岁、就很帅 2016-11-03
  • 打赏
  • 举报
回复
项目里面看看用 静态库 试试
羽毛乱发 2016-11-03
  • 打赏
  • 举报
回复
这个只是调试信息,不用去理会他,能够正常运行就可以。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧