[请教]BCB与matlab的混合编程,com方法 出错

mrdlovewlh 2011-01-12 12:01:53
各位高手,请教一个问题,我在学习BCB与matlab的混合编程,用的com方法,但是计算出的数据无法传出来,如下图所示,运行后提示错误,可能是这个函数用的不对,memcpy(outp,myout.parray->pvData,3*sizeof(double));
麻烦各位帮帮忙,先谢谢大家了!!
提示错误如下:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00401c80 in module 'Project1.exe'.Read of address 0000001A' Process stopped. Use Step or Run to continue.

程序如下:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "add_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
double aa,bb,cc;
double src[2];
double outp[3];
SAFEARRAY InSafeArray;
TVariant data;
TVariant myout;
src[0]=0;
src[1]=1;
InSafeArray.cDims=1;
InSafeArray.fFeatures=FADF_AUTO;
InSafeArray.cbElements=sizeof(float);
InSafeArray.cLocks=1;
InSafeArray.rgsabound[0].cElements=2;
InSafeArray.pvData=src;
data.SetSAFEARRAY(&InSafeArray);
data.vt=VT_R8|VT_ARRAY;
addclass11->add(3,&myout,data);
memcpy(outp,myout.parray->pvData,3*sizeof(double));
aa=outp[0];
bb=outp[1];
cc=outp[2];
Edit1->Text=FloatToStr(aa);
}
//---------------------------------------------------------------------------
...全文
97 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2011-01-12
  • 打赏
  • 举报
回复
看起来象是parray的值为NULL导致AV
mrdlovewlh 2011-01-12
  • 打赏
  • 举报
回复
哦 谢谢妖哥 那请问该如何改正呢

703

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder ActiveX/COM/DCOM
社区管理员
  • ActiveX/COM/DCOM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧