读书人

【求解救】Delphi写的DLLC++Builder

发布时间: 2013-01-08 14:02:14 作者: rapoo

【求拯救】Delphi写的DLL,C++Builder调用,结果不正确,


//Delphi DLL函数
function GetExpireDateBySN(const AcitveSN: PChar): PChar; stdcall;
var
Str: string;
D: Integer;
begin
Str := StrPas(AcitveSN);
Str := UnEncrypt(Str);
Str := RightStr(Str, 5);
D := StrToInt(Str);
Str := FormatDateTime('YYYY-MM-DD', D);
Result := PChar(Str);
end;

function GetPosNumBySN(const ActiveSN: PChar): Integer; stdcall;
var
Str: string;
begin
Str := StrPas(ActiveSN);
// ShowMessage(Str);
Str := UnEncrypt(Str);
Str := LeftStr(Str, 6);
Str := RightStr(Str, 2);
try
Result := StrToInt(Str);
except
Result := 0;
end;
end;





//BCB中的代码,我用是静态加载的,在头文件中申明如下

extern "C" char* __stdcall GetExpireDateBySN(char* ActiveSN);
extern "C" int __stdcall GetPosNumBySN(char* AcitveSN);

//调用时如下
int PosNum;
WideString ExpireDate;
WideString ActiveCode="8989380234982308"
PosNum=GetPosNumBySN(AnsiString(g_ActiveCode).c_str());
ExpireDate=GetExpireDateBySN(AnsiString(g_ActiveCode).c_str());


Dll用delphi调用一点问题也没有,但是用BCB调用 ,却得到不同的结果。
[解决办法]
什么版本的开发环境,后来版本的pchar都是双字节的,你改用pansichar试试
[解决办法]
引用:
什么版本的开发环境,后来版本的pchar都是双字节的,你改用pansichar试试

+1

读书人网 >.NET

热点推荐