vs2005调用dll的时候Initialize()函数返回错误
整个程序是调用matlab的一个dll(a0519dep_cshared.dll)再生成一个vc的dll。输入是一个二维数组和它的大小,输出也是一个二维数组和它的大小.
就是这个函数:int matdll2cdll2 (double **S, int sx,int sy ,double **i,int ix,int iy)
vs2005的程序代码如下:
#include "stdafx.h"
#include "a0519dep_cshared.h"
#pragma comment(lib , "a0519dep_cshared.lib")
#include "mclcppclass.h"
#include "mclmcrrt.h"
#pragma comment(lib, "mclmcrrt.lib")
//下面面这段是vs2005自动生成的
//————————————————————————————————————————
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
//—————————————————————————————————————————
//下面是我写的函数
extern "C" _declspec (dllexport)
int matdll2cdll2 (double **S, int sx,int sy ,double **i,int ix,int iy)
{
mxArray *p1=0;
mxArray *p2=0;
mxArray *p3=0;
mxArray *p4=0;
bool p5;
if( !mclInitializeApplication(NULL,0) )
{
return -50000;
}
if (!a0519dep_csharedInitialize())
{
return -3;
}
p3 =mxCreateDoubleMatrix(1, 1,mxREAL) ;
p1 =mxCreateDoubleMatrix(sx, sy,mxREAL) ;
memcpy(mxGetPr(p1),S,sizeof(S));
p2 =mxCreateDoubleMatrix(ix, iy,mxREAL) ;
memcpy(mxGetPr(p2),i,sizeof(i));
p5=mlfMICFBP(1,p6,p2);
//调用dll中的函数[uint8, MATLAB arrayPtr, MATLAB array] mlfMICFBP(int32, MATLAB arrayPtr, MATLAB array)
//这句肯定也有问题
a0519dep_csharedTerminate;
mclTerminateApplication();
return 999999;
}
程序调试的时候返回 -3 就是a0519dep_csharedInitialize()这个函数返回的。
请问遇到这种情况,一般是哪儿出问题了?
另外程序中肯定还有其他不合适的地方,能帮忙改改就更好了啊!!