• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

QT调用Delphi生成的COM组件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

    COM(Component Object Model),是微软的一种组件对象模型,ActiveX、DirectX以及OLE等都是基于COM建立起来的,它是开发软件组件的一种方法,多个COM组件对象可以连接起来以形成应用程序或组件系统,并且组件可以在运行时、在不重新链接或编译应用程序的情况下被卸载或替换,因此,具有很大的灵活性。

    在COM中,接口就是一切,它完全与语言无关,只要它遵循接口标准,就可以被不同语言进行调用,因此,便于快速构造应用程序、与语言无关的组件库。

    接下来,记录一下QT应用程序中如何调用Delphi生成的COM组件的步骤:

Delphi篇  

    1. Delphi项目新建: (ActiveX Library项目建立)

     1.1 新建项目,然后保存到指定文件夹路径

        

    1.2 什么都不添加,生成DLL看看

        

    1.3 查看导出函数

    复制vc的dumpbin.exe和相关exe到工程目录,方便查看:

    

        然后,打开命令行工具,进入到工程目录,执行命令(dumpbin.exe /exports {dll名字}.dll): 

        

        可以看到,1.2步骤声明的导出函数都已经导出了。

    2. 新建Automation Object并实现(这种对象可以不用导入库类型,而新建COM object需要)

    2.1 新建Automation Object,如无这个选项,自定义添加到菜单即可,方便后续添加:

    

    输入类名即可:

    

    创建后会新增一个pas文件,这里初始化了一个AutoObject对象:

    

    2.2 添加一个界面

    

            编写函数,用于实例化这个窗口:

            

    2.3 在DLL声明的导出函数调用,并模态形式显示窗口

            

    2.4 声明导出函数

            

    3. 查看函数是否正确导出

            OK, 没问题了。


QT篇

    1. 新建QT GUI应用程序项目

        

        默认下一步下一步即可,这里只是修改一下类名。

        

    2. 调用Delphi生成的COM组件dll    

    2.1 界面如下:

    

    2.2 添加槽

    

    

    因为使用了动态库,所以需要增加Activex模块库:

    

    实现:

    

注意:UUID是类的而不是接口的!    

2.3 生成的DLL拷贝到对应目录下:

    

    运行,看看如何:

    

    很好,调用成功了,后面就是有部分功能可以在delphi快速开发,有部分功能可以C++开发,充分利用不同语言上的优势进行开发了!


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[转]Delphi中,让程序只运行一次的方法发布时间:2022-07-18
下一篇:
delphistringgrid导出为excel发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap