vc++ dll调用delphi dll返回始终为空的 问题(高分)
delphi 的dll如下:
procedure enc_pin(khzh: pchar;srcpswd: pchar;dstpswd: pchar);stdcall;external 'eaicrypt.dll';
其中的 khzh和srcpswd为输入参数,dstpswd为输出参数
我自己写的vc++ 调用上面dll 的程序如下:
DESPWD_API char* __stdcall fnDESPWD(char *src)
{
char * cdno=NULL;
char * pwd=NULL;
char * deststr=NULL;
char *f = NULL;
char strcdno[100];
char strpwd[100];
char strdest[100];
memset(strcdno, 0, sizeof(strcdno));
memset(strpwd, 0, sizeof(strpwd));
memset(strdest, 0, sizeof(strdest));
ofstream fout;
fout.open("output.txt");
//字符串形式:cdno|pwd 2222222|33333
f=strstr(src , "|");
fout << flush;
if (f!=NULL)
strncpy(strcdno,src,strlen(src)-strlen(f));
f++;
strncpy(strpwd,f,strlen(f));
fout << "cdno is : " << strcdno << "\n";
fout << flush;
fout << "pwd is : " << strpwd << "\n";
fout << flush;
HINSTANCE hinstDLL=NULL;
hinstDLL=LoadLibrary("eaicrypt.dll");
if(hinstDLL!=NULL)
{
enc_pin connect;
connect = (enc_pin)::GetProcAddress (hinstDLL,"enc_pin");
if (!connect)
{
FreeLibrary(hinstDLL);
return NULL;
}
connect((LPSTR)(LPCTSTR)strcdno,(LPSTR)(LPCTSTR)strpwd,(LPSTR)(LPCTSTR)strdest);
FreeLibrary(hinstDLL);
}
fout << "despwd is : " << strdest << "\n"; //这里可以得到正确的值
fout << "despwd is[0] : " << &strdest[0]<< "\n";//这里也可以得到正确的值
fout << flush;
fout.close();
return &strdest[0];
}
可是外面调用这个dll得到的是空值, 在fout打印出来的log 中 都可以得到正确的值,可 return &strdest[0] 为空,不知道是那里错了,
各位大大帮忙看一下.