问题描述
- 请教 Qt调用ActiveX 其中ActiveX又应用了dll
- 小弟今天遇到一个问题,我用vs2010 C#语言写了一个ActiveX控件给Qt使用,其中该控件又引用了其他的dll,我发现dll中的功能函数没有起到作用,而我在vs2010环境下通过同样的调用方式是可以的,但是Qt调用的时候,只有ActiveX包含的函数起作用,比如创建文件等,但是dll中加入创建文件的代码就不起作用,请路过的大神帮我看看,小弟感激不尽。
解决方案
C#可正常工作
//根据classId获取ActiveX类
Type type = Type.GetTypeFromCLSID(new Guid(""23ED3667-1C8D-41F4-A56C-93998A0B6BE3""));
//创建类的实例,第二个参数是object数组,就是你的构造函数里面的参数
//null即为无参构造方法,也可以这么写
//object obj = Activator.CreateInstance(type);
object obj = Activator.CreateInstance(type null);
//获取实例的指定方法,根据方法名,还有其他重载,也可以根据参数找
MethodInfo mi = type.GetMethod(""analyze"");
// 调用方法,返回值是object,我的方法返回void,所以不写
mi.Invoke(obj null);
//Qt只能执行ActiveX中的函数,不能追踪到dll中的功能函数 flash->setControl(QString::fromUtf8(""{23ED3667-1C8D-41F4-A56C-93998A0B6BE3}"")); qDebug()<<""test :""<<flash->dynamicCall(""analyze()""); 请大神帮忙!
解决方案二:
加一些日志,可能再qt情况下,activex的dll有没有加载成功
时间: 2024-09-09 20:10:41