声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1655|回复: 0

[混合编程] 关于如何在VC++6.0中分步调试mex函数的问题

[复制链接]
发表于 2011-1-18 00:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 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[0]);
M=mxGetM(prhs[0]);  
N=mxGetN(prhs[0]);

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

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

}

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

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



回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 11:29 , Processed in 0.055204 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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