1. 设置编译器。在MATLAB命令窗口里敲:>>mbuild –setup,完成编译器的设置。
2. 编写M函数文件.
如:
3. 在命令窗口敲:>>comtool,出现com组件builder。选择FILE选项->New Project选项。出现以下界面。
Component name选项:设置com组件的名称,注意不要和上面添加的m文件重名。
Class name选项:设置类名称MyArraytest。一般将鼠标点击空白位置,系统会自动生成类名。
Project version选项:版本号。系统默认为1.0,将来要修改或添加其他函数时,可以修改此选项为2.0,3.0等。
Project directory选项:工程所在目录。
Complier options选项:编译器配置选项,全部选中。
最后单击OK。系统会出现对话框,问你是否创立工程目录,你选YES。
4. 单击Project Files->plotclass->M-files,然后选中comtool菜单Project->Add File选项,添加上面写好的plot_test M函数,当然,可以按需要添加更多的M或MEX函数。
5. 单击Build按钮,选中Com Object选项,这时com-builder会帮你自动编译连接该组件,生成所需要的头文件,源文件,接口描述文件,动态连接库文件,等等。在右侧Build Status显示框里给出了编译的过程和信息。在菜单Component->Component Info里有关于接口、类、库的信息。在..\work\xxcom文件夹里,出现了两个子文件夹,distrib和src,这是我们VC中需要用到的文件、库、资源、接口等。在src\xxcom_idl_i.c中,有关于com类和com接口的GUID。其中CLSID(类的GUID)在VC编程中需要用到。别急,还有一步打包发布。选择Component->Package Component,系统就会自己帮你打包了。打包文件在distrib文件夹中有xxcom可执行文件。拷贝..\work\xxcom文件夹下所有文件,在另外一个机器上,双击xxcom可执行程序,注册com组件,。你的程序,就可以在其他机器上执行了。
6. 打开VC++编译器,选择文件->新建->工程->MFC(exe)->命名(Test01)-对话框->完成)。
7. 打开类向导,在 Add Class选项内,选中From a typed library,进入..\xxcom\src文件夹,选中xxcom_idl.tlb文件,点击打开,OK。这时一个COM类便加入进来了,查看一下为Icxx类。
9. 下面就是OLE调用的基本方法了。首先在 CTest01App类的InitInstance()里添加初始化OLE代码。
if (suc==FALSE)
{
::AfxMessageBox("初始化OLE失败!");
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// CTest01Dlg dialog
const CLSID CLSID_cxx = {0x37C14FC3,0x7B1A,0x4711,{0xA2,0x99,0x48,0x29,0x7B,0xA5,0x6D,0xE1}};
{
Icxx m_pRsp;
// Construction
public:
CTest01Dlg(CWnd* pParent = NULL); // standard constructor
{
m_pRsp.CreateDispatch(CLSID_cxx,NULL); //创立接口
COleDispatchDriver(); //连接(此句可以不写)
VARIANT x;
VARIANT y;
VARIANT s;
VariantInit(&x); //初始化
VariantInit(&y);
VariantInit(&s);
y.vt = VT_R8;
s.vt = VT_R8;
//数组传递数据
x.dblVal=3.2;
y.dblVal=3.2;
s.dblVal=0.0;
//调用方法
m_pRsp.add(para,&s,x,y);/*输出参数的个数*/
m_pRsp.DetachDispatch();
m_pRsp.ReleaseDispatch();
}