该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我写了一个C++文件tdbconnect.cpp,想通过matlab调用该文件中的函数。
在tdbconnect.cpp中有mexFunction函数,你们晓得是什么函数的。
在mexFunction函数中,我创建了一个指针void *的,现在想返回出来,给另一个
函数使用。但是,指针有问题了。纠结啊!!!!!!!
具体如下:
1. tdbconnect.cpp --> mex编译为tdbconnect.mexw64 ;
tdbgetdata.cpp --> mex编译为tdbgetdata.mexw64 ;
2. 在tdbconnect.mexw64中,我一个调用自定义函数创建一个指针,
void *handle = My_CreateHanle(); //创建一个指针,其实是构造了一个对象
INT_PTR nHandle = (INT_PTR)handle; //指针用整数表示,INT_PTR是一个Windows宏
//如果是64位PC,INT_PTR就是__int64;如果是32位PC,INT_PTR就是int;
然后通过建立一个structArray返回出去.
dat = tdbconnect;
dat.handle 就是传出来的handle值
3. 在tdbgetdata.cpp中,我先把dat.handle传进去,使用它。
void *pHandle = (void*)((INT_PTR)*mxGetPr(prhs[0]));
GetData(pHandle);
..................
就是传进来这里出错了???????
我利用VS2010跟进库里面去看,结果就是传进去的这个指针不对,但是,我在这两个
文件中分别打印出这个指针,值是一样的啊!!!
请教了...............
高手们,体现你们能力的时候来了,嘻嘻