vs集成qt,vs2010集成qt
一、环境介绍操作系统:win10 64位QT版本:5.12.6VS版本:2017。QtActiveX用于封装com组件。打包的COM组件有两个版本,一个是DLL版本,一个是打包成EXE。因为COM组件是微软技术,编译时必须使用MSVC编译器。
二。有关环境安装,请参考以下文章
3.将Qt程序封装成COM组件3.1。在Qt Creator中将exe注册为COM组件
将以上三行添加到。pro文件,第三行是是否可以添加版本信息。
ffmpegVideoPlayer类:公共QWidget
{
q _对象
Q_CLASSINFO(ClassID , { 4d c3f 340-a6f 7-44 E4-a79b-3e 9217695 FBD } )
Q_CLASSINFO(InterfaceID , { 9ee 49617-7d5c-441 a-b833-4b 068d 40d 751 } )
Q_CLASSINFO(EventsID , { 13 ECA 64 b-ee2a-4f3c-aa04-5d 9d 975979 a 7 } )
公共:
ffmpegVideoPlayer(q widget * parent=nullptr);
~ ffmpegVideoPlayer();
.
}最重要的是三行Q_CLASSINFO()。这个宏为类提供了附加信息。ClassID和InterfaceID是必不可少的,需要使用COM组件中的事件时添加EventsID。macro的第二个参数是一个128的字符串,这是一个惟一的标识符。
ClassID:类的ID(唯一标识类ID(COM)的方法)。注册成功后,您可以在注册表的以下路径中找到该模块:
计算机\ HKEY当前用户\软件\类别
InterfaceID:接口ID的ID
事件:EventsID标识符
还可以使用q _ property(int value read value write setvalue)添加一些其他属性。
获取COM对象的方法:
QAXFACTORY_BEGIN(
{ ce 947 ee 3-0403-4 FDC-895 a-4fe 779394 b 46 } ,//类型库ID
{ 8de 435 ce-8d2a-46ac-B3 B3 B3-CB 800d 0847 c 7 } )//应用ID
QAXCLASS(ffmpegVideoPlayer)
QAXFACTORY_END()要编译生成exe,需要在main函数中实例化一个QA application。
int main(int argc,char *argv[])
{
QApplication a(argc,argv);
如果(!QAxFactory:isServer()){
ffmpegVideoPlayer w;
w . show();
//创建并显示主窗口
}
返回a . exec();
}然后编译
服务器注册成功!COM组件注册成功。
3.2.在VS2017中将dll库封装为COM组件
因为在Qt Creator中把库封装成COM组件会有一个问题,这个问题暂时没有解决,所以可以直接在VS2017中创建Qt ActivQt Server项目,然后移植其他源文件进行编译。主要解决的是移植的问题,编译完成会自动注册,最后会出现注册成功的服务器!此时,可以在注册表中找到该项。
第四,注册编译好的COM库。
打包。
注册exe程序
服务器注册成功!文字表示注册成功。
注册dll:
第五,用html调用COM组件来调用exe
超文本标记语言
头
标题ffmpegVideoPlayer/标题
/头
身体
对象id=ffmpegVideoPlayer 宽度=80% 高度=80%
clsid:4dc3f 340-a6f 7-44 E4-a79b-3e 9217695 FBD
/对象
/body
/html使用IE浏览器打开它,运行上面生成的exe程序并刷新浏览器。
单击确定。
在此插入图片描述。
正常运行。
调用dll的时候,html代码要改成对应的classid,然后HTML文件要放在dll的同一个目录下。
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。