在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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++开发,充分利用不同语言上的优势进行开发了! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论