读书人

请教这个函数哪里有有关问题

发布时间: 2013-08-16 14:29:57 作者: rapoo

请问这个函数哪里有问题?
function test1():String ;stdcall;
begin
Result:='s1';
end;
exports test1;
我是用这个函数做个动态链接库,其它程序调用时出现错误
[解决办法]
返回值不能是string类型
[解决办法]
dll函数返回值不能是string类型
[解决办法]
string->pchar
[解决办法]
Pchar……
[解决办法]
1、D7下要第一个引用Sharemem
2、低级错误,多语言开发中最大的问题:
Result:='s1';是将常量's1'的地址赋给Result,'s1'是引号中写死的,也就是固定不变的,它为常量,编译期地址确定,这行代码改变了“:=”前的地址,产生地址变化,如果想对原本地址操作应该对已分配过内存的Result进行Result[1]:=''、Result[2]:=''赋值或用CopyMemory函数
[解决办法]
3、多语言配合开发中应该使用PChar或PAnsiChar,而且如第2条所说,不应使结果地址发生改变,还要遵循“谁申请,谁翻译”的原则
[解决办法]
是“谁申请、谁释放”
[解决办法]
改成shortstring

读书人网 >.NET

热点推荐