对用过COM的来说巨简单的问题(在线等待,解决立即给分)

zhaowuqing 2002-11-22 10:40:21
某个公司只提供给我一个DLL组件,里面只有一个TTS方法给我使用,接口是ITTSEngine,我怎么才能调用这个方法?,我想通过下面方式,可是不行:(
HRESULT hr;
if(pIUnknown!=NULL)
{
hr=pIUnknown->QueryInterface(IDD_ITTSEngine,(void**)&TTSPtr);
if(FAILED(hr))
{
::AfxMessageBox("不能获取接口IID_ITTSEngine!");
pIUnknown->Release();
return;
}
TTSPtr->Tts((_bstr_t)" ssssss","file.pcm");
TTSPtr->Release();
}
编译总提示IDD_ITTSEngine没有定义,COM对我来说太陌生了,请高手帮我解决这个问题,不生感激!分不够还可另开帖子再加!
...全文
58 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaowuqing 2002-11-22
  • 打赏
  • 举报
回复
to:unlun(如风)
你好,能多写点代码吗?我照着你的做法做了,

IIT::ITTSEngine::Tts(.,..);
结果不行error C2275: 'IIT::ITTSEngine' : illegal use of this type as an expression
unlun 2002-11-22
  • 打赏
  • 举报
回复
#import "路径\filename.dll" rename_namespace("IIT")
using namespace IIT;

zhaowuqing 2002-11-22
  • 打赏
  • 举报
回复
to:kenwhale(屠夫)
你好,我按照你的方法做了,生成了ATLCOM.tlh和ATLCOM.tli文件,可是不知道下一步该具体怎么做,如果您有空的话,能不能给点代码提示?多谢了!
zhaowuqing 2002-11-22
  • 打赏
  • 举报
回复
我在stdafx.h中#import过了
#import "c:\\tts\\ATLCOM.dll" no_namespace :(
leapmars 2002-11-22
  • 打赏
  • 举报
回复
在Dll中的资源部分应该包含了类型库,你用#import 指令试试
zhaowuqing 2002-11-22
  • 打赏
  • 举报
回复
哪位老兄能提供一点代码啊,拜托了
hr = CoInitialize(NULL);
hr = CLSIDFromProgID(OLESTR("ATLCOM.TTSEngine.1"), &clsid); hr = CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER/*CLSCTX_LOCAL_SERVER*/,__uuidof(ITTSEngine),(void**)&TTSPtr);
我现在这么初始化成功了,但是调用
if(TTSPtr!=NULL)
{
TTSPtr->AddRef ();
TTSPtr->Tts((_bstr_t)" ssssss","file.pcm");
TTSPtr->Release();
}
就出错了:((---------------------------
Microsoft Visual C++
---------------------------
Unhandled exception in CTest.exe (ATLCOM.DLL): 0xC0000005: Access Violation.
---------------------------
确定
---------------------------
)请大家帮帮忙吧
kenwhale 2002-11-22
  • 打赏
  • 举报
回复
用Ole/view ,,,选择view type lib,打开这个dll,得到idl文件后,用vc编译得到头文件。

另外用#import引入也可以
Ariesman 2002-11-22
  • 打赏
  • 举报
回复
IDD_ITTSEngine
是不是IID_ITTSEngine吧
如果还不行的话可能是GUID头文件和接口定义头文件没给
zhaowuqing 2002-11-22
  • 打赏
  • 举报
回复
to:zhangyilan(数字通信)
你好,他们只给了一个dll,没有.tlb让我导入 :(
zhangyilan 2002-11-22
  • 打赏
  • 举报
回复
可以将组件的*.tlb文件引入工程
就象使用一个类似的来使用就可以了
如果使用你用的方法,需要添加上ITTSEngine的接口ID号
zhaowuqing 2002-11-22
  • 打赏
  • 举报
回复
算了,结帖吧,虽然问题还没解决 :(
kenwhale 2002-11-22
  • 打赏
  • 举报
回复
得到idl了没有?得到了就插入到工程中,右击选setting,那么就可以设定编译的头文件,---头文件以及.c文件都有了。

如果还访问报错,那就是控件的问题了。

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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