描述:
在matlab中编写一个m文件
如下:
function y=mymagic(x)
y=magic(x);
用comtool编译成com组件
建立一个MFC工程
在stdafx.h中导入com组件
#import "magicdemo_1_0.dll" raw_interfaces_only
using namespace magicdemo;
创建一个对话框DlgTestMatlabCOM里边有一个按钮
void DlgTestMatlabCOM::OnCreat()
{
HRESULT hresult;
CLSID clsid;
CoInitialize(NULL); //initialize COM library
hresult=CLSIDFromProgID(OLESTR("magicdemo.magic.1_0"), &clsid);
//retrieve CLSID of component
Imagic *t;
hresult=::CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(Imagic),(LPVOID *) &t);
if(FAILED(hresult))
{
AfxMessageBox("Creation Failed");
return;
}
//后面是调用Imagic接口的操作
}
编译通过,运行时,结果hresult=CLSIDFromProgID(OLESTR("magicdemo.magic.1_0"), &clsid);
返回的是0显示成功,而hresult=::CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(Imagic),(LPVOID *) &t);返回-2147024770在error lookup里边显示是“找不到指定的模块。 ”
组件是通过matlab的comtool创建的,在创建的时候已经注册,Imagic是com组件的一个接口,也是要调用的接口。
因为对com接口不甚了解-_-!,只是因为急用才做的,希望各位大侠指点。
解决方案1:
用Matcom软件可以将Matlab程序转换成C++语言程序,建议如果改正不过来的话可以下这个软件试试,网上有。