发信人: xxhn (小湖南), 信区: MathTools
标 题: Re: Matlab与VC混合编程中出现的问题(用idl或dll来调用)
发信站: BBS 水木清华站 (Tue Aug 19 15:08:50 2003), 转信
这儿再提供一种通过Idl或dll来调用com组件的方法(不用生成*.h和*.c文件)
其实这种方法比通过生成.h和.c文件来调用要简单一些:),还用精华区的例子
1.通过ole/com object生成idl文件,将此idl文件加入工程,点菜单build-complie
comtest_1_0.tlb,生成tlb文件
2.打开classwizard,点右边的add class-from a type library class,选中刚生成的
comtest_1_0.tlb(应该在debug\目录下),其实这儿也可以直接选择用matlab的combuilder
生成的comtest_1_0.dll(这样就省去了第一步),后面将出现生成class的一些对话框,照
提示去做就可以了,这样就生成了comtest_1_0.h和comtest_1_0.cpp,多了一个Isgltest
类:)
3.测试代码如下:
头文件中只需添加:
#include "comtest_1_0.h"
测试代码:
Isgltest st;
AfxOleInit();
if(st.CreateDispatch(_T("comtest.sgltest")))
{
st.im_test();
AfxMessageBox("Haha,Succeeded");
st.ReleaseDispatch();
}
else
AfxMessageBox("UnSucceeded");
上述代码的具体意义参看msdn,我也是刚刚摸索到:)
【 在 promise0608 (promise0608) 的大作中提到: 】
: 我在使用COM组件时,用Microsoft Visual Studio的工具OLE Viewer 打开生成的组件。找
: 到那个用Matlab com builder生成的Dll文件,将其另存为*.h 和*.c 文件时,出现错误!
: 我用的是VC.NET,不知道什么原因!
: 请大家帮帮我!
: 谢谢了!