小弟今天遇到一个问题,我用vs2010 C#语言写了一个ActiveX控件给Qt使用,其中该控件又引用了其他的dll,我发现dll中的功能函数没有起到作用,而我在vs2010环境下通过同样的调用方式是可以的,但是Qt调用的时候,只有ActiveX包含的函数起作用,比如创建文件等,但是dll中加入创建文件的代码就不起作用,请路过的大神帮我看看,小弟感激不尽。
2条回答 默认 最新
- milk_216 2015-02-04 10:00关注
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()"); 请大神帮忙!
解决 无用评论 打赏 举报