zholv 发表于 2011-1-18 00:31

关于如何在VC++6.0中分步调试mex函数的问题

本帖最后由 zholv 于 2011-1-18 00:38 编辑

各位朋友大家好,
我现在写了一个mex函数,为了增加计算速度,但是由于代码比较长,所以想分部调试,看来一些书上的例子,都是直接mex a.c 方法直接转化成dll文件,没有说到怎么在VC中分布调试的问题,由于在VC6.0中建立一个dll工程的,和mex的原理一样,但是不可以在VC中调试,我试了试exe console的工程,但是有些问题,我的代码如下:

************************************************

//show the same matrix
#include "stdafx.h"
#include <stdio.h>
#include "math.h"
#include "mex.h"
#include <string.h>

void mexFunction(int nlhs, mxArray * plhs[], int nrhs, const mxArray * prhs[])
{   
double *indata;
double *outdata;
int M,N;
int i,j;
indata=mxGetPr(prhs);
M=mxGetM(prhs);
N=mxGetN(prhs);

plhs= mxCreateDoubleMatrix(M, N, mxREAL);
outdata=mxGetPr(plhs);

for(i=0;i<M;i++)
{
    for(j=0;j<N;j++)
   outdata=indata;
}

}

//MAIN function
void
main()
{
// 声明 DLL 函数输入输出 mxArray 对象
const mxArray * FgeoXY12 ={0};
mxArray * fFRvalue ={0};
// 给输入 mxArray 对象分配内存
FgeoXY12 = mxCreateDoubleMatrix(2,2,mxREAL);
double fgeoXY12[] = {10e3, 10e3, 20e3, 20e3};
// 给输入 mxArray 对象赋值
memcpy(mxGetPr(FgeoXY12),fgeoXY12,4*sizeof(double));
// 调用 DLL 函数,注意输入与输出的接口是不同的
mexFunction(1, fFRvalue, 1, FgeoXY12);
}

在分布调试的过程中,memcpy那里出现了问题,不知道还有没有其它给mxArray赋值的命令或者我这种方法本来就是错误的,希望版上的好人能够给于指导,
BTW,如果有童鞋也搞这方面的DD,加我Q==Q===290711500,小弟乐于跟大家共同进步,团结力量大,周围做互编的人太少了,加了几个Q==Q群感觉都不懂的样子。
Good luck!



页: [1]
查看完整版本: 关于如何在VC++6.0中分步调试mex函数的问题