双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

被一个com搞的晕头转向。。。。

draculamx draculamx 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有一个com是dll文件,注册,使用,都没问题,但是我用到其中一个函数的时候,始终无法运行。
dll文件,通过“Component”--"Import Component"方式导入,所以自动生成了xxxx_TLB.h和xxxx_TLB.cpp

在xxxx_TLB.h中,有这样一个函数和接口:

//这是我要调用的函数,这个函数的最后一个参数,就是我出问题的地方,它需要下面那个接口的指针
HRESULT __fastcall EncodeFile(BSTR FileName/*[in]*/, BSTR
OutputFileName/*[in]*/,
BSTR Parameters/*[in]*/,
unsigned ResampleSampleRate/*[in]*/,
unsigned Channels/*[in]*/,
double StartPosition/*[in]*/,
double Length/*[in]*/,
double Normalize/*[in]*/,
Bassencoder_tlb::IProgress* ProgressCallback/*[in]*/);

//这是接口
// *********************************************************************//
// Interface: IProgress
// Flags: (4352) OleAutomation Dispatchable
// GUID: {C23CF58D-3121-45D2-A0DB-B19F98350D52}
// *********************************************************************//
interface IProgress : public IDispatch
{
public:
HRESULT STDMETHODCALLTYPE ProgressCallback(double Progress/*[in]*/); // [201]
};


然后我创建一个窗体,在窗体的头文件 Form1.hpp中,我改写了窗口类的派生关系
将
“class TFormMain : public TForm”

改为
“class TFormMain : public TForm ,public IProgress”


接着我重写了“IProgress ”接口中的“ProgressCallback”函数

HRESULT STDMETHODCALLTYPE TFormMain::ProgressCallback(double Progress)
{
pb1->Position=(int)(Progress);
return S_OK;
}

然后我调用这个函数:
EncodeFile(.............(IProgress*)this);


运行结果“Pure virtual function called”。。。。。

我尝试了一些修改
第一种,把重写的函数类改为基类,如下:

HRESULT STDMETHODCALLTYPE IProgress::ProgressCallback(double Progress)
{
//pb1->Position=(int)(Progress);
return S_OK;
}


第二种
EncodeFile(.............(IProgress*)this);

改为
EncodeFile(.............this);



两种都不行。。其实这个代码是照着DEMO中,DELPHI的例子来的,DELPHI运行完全没有问题。。。
搞了一天了,不行了,大家帮忙看看。。。




...全文

相关推荐

晕头转向的鸟flash动画

晕头转向的鸟flash动画是一款一群晕头转向的卡通小鸟动画素材下载。

weixin_38691256

COM组件与DLL的深度对比:为什么AutoCAD等大型软件选择COM?

本文探讨了大型软件(如AutoCAD)偏好使用COM组件而非普通DLL的原因。首先分析了DLL的局限性,包括二进制兼容性问题、缺乏组织性、进程隔离困难等。随后阐述了COM的七大优势:接口化组织、易于升级维护、高安全性、进程间调用、分布式能力、面向对象特性和生态支持。文章还梳理了OLE、ActiveX与COM的关系,指出COM是底层核心协议。最后以AutoCAD为例,说明COM在多语言支持、稳定性隔离和版本兼容方面的优势。尽管现代技术发展迅速,但COM所体现的组件化思想仍具有深远影响。

程序员乐逍遥

坐在椅子上晕头转向的3d小人素材PPT模板

坐在椅子上晕头转向的3d小人PPT模板素材,关键词:椅子,3d小人图片,晕头转向,PPT小人素材,小人商务图片,PPTX格式; 坐在椅子上晕头转向的3d小人PPT模板素材,关键词:椅子,3d小人图片,晕头转向,PPT小人素材,小人商务图片,PPTX格式;转载请注明出处

weixin_38659789

一个低级的搞人程序

在桌面创建无数个文件,过一段时间,自动删除

sith19901002

坐在椅子上晕头转向的3d小人PPT模板素材.rar

坐在椅子上晕头转向的3d小人PPT模板素材,关键词:椅子,3d小人图片,晕头转向,PPT小人素材,小人商务图片,PPTX格式;

weixin_39840387
评论 17
收藏 已收藏
分享
返回顶部
draculamx
ActiveX/COM/DCOM 703 成员 3,001 内容