问个关于DLL内存拷贝的问题

mdejtod mdejtod 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
RT,在DLL中定义一个结构体
TBusinessData = packed reocrd
FSevice : char[0..50];
FStyle : char[0..50];
FPrice : integer;
FYear : Word;
FMoney : Doubel;
end;
TReportData = array of TBusinessData ;
PReportData = ^TReportData;
然后定义一函数,原型是:
function GetReportData(nStart,nEnd : TSYSTEMTIME;var aCount : integer) : pointer ;Export;Stdcall;
var pData : PReportData;
begin
//acount 为查询得到的记录数
GetMem(pData,Sizeof(TBusinessData ) * acount);
Setlength(TReportData(pData^),acount);
for i := low(TReportData(pData^)) to high(TReportData(pData^)) do
begin
with TReportData(pData^)[i] do
begin
lstrcpy(FSevice,pchar('测试'));
.
.
.
end;
end;
result := pdata;
end;

然后我在DLPHI里面可以调用,并且能够从返回的指针中正确的取出所有值,但是VC调用时,它返回的值都是乱码
如果在DLL中只返回一个结构体指针,那也可以正确的获取结构体指针中的数据,一旦改为上面这种方式就不行了,不知道什么原因!!!!!
...全文

相关推荐

评论 21
收藏 已收藏
分享
返回顶部