找回密码
 注册
Simdroid-非首页
查看: 81|回复: 1

[求助]VC++和MATLAB混编时com组件无法调用

[复制链接]
发表于 2008-7-27 17:29:59 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
环境为xp系统下:VC++6.0   matlab6.5
在matlab中写了如下代码:

function huatu()
x=-10:0.1:10;
y=sin(x);
plot(x,y);

存储为huatu.m文件。
利用matlab自带comtool进行组件创建;在VC++中新建基于对话框的MFC(exe),并在对话框中添加button控件及其响应函数。
添加包含头文件代码如下:

#include "mwcomtypes.h"
#include "component_idl_i.c"
#include "component_idl.h"

在OnButton1()中添加如下代码:

CoInitialize(NULL);
Ihuatu *pclass=NULL;
HRESULT hr=CoCreateInstance(CLSID_huatu,NULL, CLSCTX_ALL, IID_Ihuatu, (void **)&pclass);
hr=pclass->huatu(); //将此句改为pclass->huatu();后运行也出错误

以上编译可以通过,但是运行出错,调试结果发现 hr 返回值为 -2147221164

component_idl_i.c文件中有如下代码:
const IID IID_Ihuatu = {0x2C04C939,0x4891,0x4F9F,{0x98,0x71,0xAC,0x05,0x59,0x66,0x76,0x56}};
const IID LIBID_component = {0x9531A06B,0x2FA4,0x4320,{0xA5,0x65,0xF8,0xDB,0xB4,0x1D,0x85,0xBF}};
const CLSID CLSID_huatu = {0xDC20D2A4,0x4010,0x4E04,{0xB7,0xF8,0x9F,0x88,0x68,0x91,0x72,0x48}};

查找注册表,可以找到CLSID类里{DC20D2A4-4010-4E04-B7F8-9F8868917248}项,应该是注册过了,请问如何解决?
注:上传了一个cpp文件,如需要其他源文件,请说明。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2008-7-30 11:29:04 | 显示全部楼层 来自 黑龙江哈尔滨
Simdroid开发平台
这么快就沉下来了,还没有人回答呢,自己顶一下。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 09:21 , Processed in 0.037175 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表