Qt 调用 Matlab COM

  • 时间:
  • 浏览:
  • 来源:互联网

Qt 调用 Matlab COM

  • 1.正常调用Com
    • 那些坑

1.正常调用Com

一般而言 我们使用 Qt 调用windows Com ,需要使用 QAxObject
以Matlab为例

   m_pAxObject = new QAxObject;
   m_pAxObject->setControl("Matlab.Application");
   //下面函数可以获取该com的向外暴露的接口
   QString strDoc = m_pAxObject->generateDocumentation();
   QString result = m_pAxObject->dynamicCall("Execute(QString Name)", "version").toString();

那些坑

正常调用流程是如上所示的。但是对于一些特殊情况会比较诡异
第一 :如果我们想使用 输出参数 即如

  void test(const QString & arg,QString & outArg);

要使用

QVariant QAxBase::dynamicCall(const char *function, QList<QVariant> &vars)

第二要将 输出参数的 形参去掉
即 要

//对的形式
	m_pAxObject->dynamicCall("Feval(QString, int , QVariant& , QVariant, QVariant)"
		,argList);
//错的形式
	m_pAxObject->dynamicCall("Feval(QString fName, int noutArg , QVariant& outArg, QVariant, QVariant)"
		,argList);

本文链接http://smartadmin.com.cn/smartadmin/show-16583.html