怎样实现Delphi程序和VC编写的DLL函数之间传递字符串?(100分)

  • 主题发起人 主题发起人 shincolu
  • 开始时间 开始时间
delphi中的String 与VC中的格式不一样。声明时候需要将参数声明成ansiString.
具体的你在试一试。
larryle
 
我自己已经解决。Delphi下的PChar和VC下的char* 对应。
 
必须要注意的是:如果从 DLL 中回传字符串,要计算并手工分配空间。
其他的场合,用 PChar 就可以传递了。
还有,如果是异步的处理,必须注意变量的生存期。
 
To BaKuBaKu:你提醒得很对,可是我在调用之前根本就没法知道返回的字符串会有多长,
我现在不是特别清楚怎么样分配空间。如果在调用之前分配空间(不知道该多大);如
果将字符串作为返回值(return)返回,这样在调用之前无需分配空间,但要求在Dll函数
中分配空间,这样是不是会有空间泄漏的危险?谢谢!
 
首先在动态连接库里开辟内存空间,存放你要返回的字符窜,返回的是内存的地址,
然后在动态连接库里做一个函数用于释放内存。实例:
动态连接库程序:
void returnstring(char *p)
{
p = new char[ 任意数];
.
.
.
return;
}

void freemem(char *p)
{
if(p)
delete p;
}

在delphi中,调用完第一个函数后并处理完后,马上调用freemem释放内存.
 
多人接收答案
 
后退
顶部