主题:[Linker Error] 用C++Builder调用Matlab的实例运行时出现这样的错误!
下面是我用C++Builder调用Matlab的实例运行时出现这样的错误!
"[Linker Error] Unresolved external '_mclGetPr' referenced from C:\DOCUMENTS AND SETTINGS\JOHN\桌面\调用MATLAB\UNIT1.OBJ"
"[Linker Error] Unresolved external '_mclCreateDoubleMatrix' referenced from C:\DOCUMENTS AND SETTINGS\JOHN\桌面\调用MATLAB\UNIT1.OBJ"
而后面运行时有有这样的错误
"Access violation at address CAFEDEAD.Read of address CAFEDEAD."
请问哪位高手可以帮我一下呢?
Unit1.cpp
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "engine.h"
#include "mat.h"
#include "matlab.h"
#include "matrix.h"
#include "tmwtypes.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TEdit *Edi[2];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float *b,a[4]={2,5,4,3};
float c[2];
mxArray *z,*x,*y;
Engine *ep;
z=mxCreateDoubleMatrix(2,2,mxREAL);
mxSetClassName(z,"z");
if(ep=engOpen(NULL))
{
memcpy((char*)mxGetPr(z),(char*)a,4*sizeof(float));
engEvalString(ep,"[x,y]=eig(z);");
memcpy((char*)c,(char*)mxGetPr(x),2*sizeof(float));
}
else ShowMessage("Can't Open The Engine!");
engClose(ep);
for(int i=0;i<2;i++)
{
Edi[i]=new TEdit(this);
Edi[i]->Text=FloatToStr(c[i]);
Edi[i]->Parent=Form1;
Edi[i]->Visible=true;
Edi[i]->Left=40;
Edi[i]->Top=50+i*40;
Edi[i]->Height=21;
Edi[i]->Show();
}
}
//---------------------------------------------------------------------------
[size=5]Access violation at address CAFEDEAD.Read of address CAFEDEAD[/size]
"[Linker Error] Unresolved external '_mclGetPr' referenced from C:\DOCUMENTS AND SETTINGS\JOHN\桌面\调用MATLAB\UNIT1.OBJ"
"[Linker Error] Unresolved external '_mclCreateDoubleMatrix' referenced from C:\DOCUMENTS AND SETTINGS\JOHN\桌面\调用MATLAB\UNIT1.OBJ"
而后面运行时有有这样的错误
"Access violation at address CAFEDEAD.Read of address CAFEDEAD."
请问哪位高手可以帮我一下呢?
Unit1.cpp
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "engine.h"
#include "mat.h"
#include "matlab.h"
#include "matrix.h"
#include "tmwtypes.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TEdit *Edi[2];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float *b,a[4]={2,5,4,3};
float c[2];
mxArray *z,*x,*y;
Engine *ep;
z=mxCreateDoubleMatrix(2,2,mxREAL);
mxSetClassName(z,"z");
if(ep=engOpen(NULL))
{
memcpy((char*)mxGetPr(z),(char*)a,4*sizeof(float));
engEvalString(ep,"[x,y]=eig(z);");
memcpy((char*)c,(char*)mxGetPr(x),2*sizeof(float));
}
else ShowMessage("Can't Open The Engine!");
engClose(ep);
for(int i=0;i<2;i++)
{
Edi[i]=new TEdit(this);
Edi[i]->Text=FloatToStr(c[i]);
Edi[i]->Parent=Form1;
Edi[i]->Visible=true;
Edi[i]->Left=40;
Edi[i]->Top=50+i*40;
Edi[i]->Height=21;
Edi[i]->Show();
}
}
//---------------------------------------------------------------------------
[size=5]Access violation at address CAFEDEAD.Read of address CAFEDEAD[/size]