delphi编写dll遇到的问题

libraryutf8string;usesSystem;{$R*.RES}functionUTF8STRS(str:pchar):pchar;stdcall;expor... library utf8string;

uses
System;

{$R *.RES}

function UTF8STRS(str:pchar): pchar; stdcall;export;
begin
Result :=pchar(UTF8Encode(str));
end;

exports
UTF8STRS;

begin
end.

我用这段代码生成了一个dll,供其他程序调用,编译没有问题,但是调用的时候总是出现内存错误!
哪位兄弟能帮忙解决一下
是供autoit3调用的
2楼和3楼的都能编译
但是autoit3调用的时候都是内存错误
展开
 我来答
达人国王
2010-06-19 · TA获得超过168个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:177万
展开全部
主要是dll调用时内存在返回之前已经释放掉了。可以考虑使用全局变量或者函数中导入变量参数。

另外

uses
System;

是不需要的

function UTF8STRS(str:pchar): pchar; stdcall;export;

而后面又
exports
UTF8STRS;

多余了

最主要出错原因还是内存在返回之前已经释放掉了

唉!!!还是要写出源代码给你啊?

library utf8string;

{$R *.RES}

var
WGS:system.utf8string;

function UTF8STRS(str:pchar):pchar; stdcall;
begin
WGS:=UTF8Encode(str);
Result:=pchar(WGS);
end;

exports
UTF8STRS;

begin
end.
billswhot
2010-06-18 · TA获得超过1015个赞
知道小有建树答主
回答量:1182
采纳率:0%
帮助的人:666万
展开全部
你是什么语言调用啊,如果是C++肯定内存错误的,dll里是不能用string类型的要用pchar string是delphi自有的变量类型,c++里是没有string类型的

library utf8string;

uses
ShareMem,
System;

{$R *.RES}

function UTF8STRS(AStr:PWideChar):PChar;stdcall;//要是delphi2010的话PChar要改为PAnsiChar
var
sInTmp :WideString ;
sOutTmp:AnsiString;
begin
sInTmp := AStr;
sOutTmp :=UTF8Encode(sInTmp);
StrPCopy(Result,sOutTmp);
end;

exports
UTF8STRS;

begin
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
softwb
2010-06-18 · TA获得超过451个赞
知道小有建树答主
回答量:763
采纳率:0%
帮助的人:380万
展开全部
library utf8string;

uses
ShareMem,
System;

{$R *.RES}

function UTF8STRS(str:Pchar):PChar;stdcall;
var
sTmp :String ;
begin
sTmp := str;
sTmp :=UTF8Encode(sTmp );
StrPCopy(Result,sTmp);
end;

exports
UTF8STRS;

begin
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式