sueswang
2008-11-08, 19:01
matlab程序如下
function f=qioudao(x)
f=diff(x);
生成动态链接库后在vc6.0编写windows控制程序台程序如下:
#include "iostream.h" // 输入输出头文件
#include "mclmcr.h" // mxArray类型声明
#include "qioudao.h" // DLL头文件
void display(const mxArray* in, const char* name);
int main()
{
// 初始化程序
if( !mclInitializeApplication(NULL,0) )
{
fprintf(stderr, "Could not initialize the application.\n");
exit(1);
}
// 初始化库
if (!qioudaoInitialize())
{
fprintf(stderr,"Could not initialize the library.\n");
exit(1);
}
mxArray *X;
mxArray *f=NULL;
X = mxCreateDoubleMatrix(1,1,mxREAL);
char fin[] = {"x"};
memcpy(mxGetPr(X),fin,sizeof(char));
mlfQioudao(1,&f,X);
display(f,"f");
mxDestroyArray(X);
mxDestroyArray(f);
qioudaoTerminate();
mclTerminateApplication();
return 0;
}
void display(const mxArray* in, const char* name)
{
double* data;
data = mxGetPr(in);
printf("%s = \n",name);
printf("%d\t",data);
}
但出现结果是f=0,而不是对f = 1
请问上面程序错在哪里?是不是对mwArray操作有问题?
function f=qioudao(x)
f=diff(x);
生成动态链接库后在vc6.0编写windows控制程序台程序如下:
#include "iostream.h" // 输入输出头文件
#include "mclmcr.h" // mxArray类型声明
#include "qioudao.h" // DLL头文件
void display(const mxArray* in, const char* name);
int main()
{
// 初始化程序
if( !mclInitializeApplication(NULL,0) )
{
fprintf(stderr, "Could not initialize the application.\n");
exit(1);
}
// 初始化库
if (!qioudaoInitialize())
{
fprintf(stderr,"Could not initialize the library.\n");
exit(1);
}
mxArray *X;
mxArray *f=NULL;
X = mxCreateDoubleMatrix(1,1,mxREAL);
char fin[] = {"x"};
memcpy(mxGetPr(X),fin,sizeof(char));
mlfQioudao(1,&f,X);
display(f,"f");
mxDestroyArray(X);
mxDestroyArray(f);
qioudaoTerminate();
mclTerminateApplication();
return 0;
}
void display(const mxArray* in, const char* name)
{
double* data;
data = mxGetPr(in);
printf("%s = \n",name);
printf("%d\t",data);
}
但出现结果是f=0,而不是对f = 1
请问上面程序错在哪里?是不是对mwArray操作有问题?