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调用的时候都是内存错误 展开
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调用的时候都是内存错误 展开
3个回答
展开全部
主要是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.
另外
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.
展开全部
你是什么语言调用啊,如果是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.
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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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.
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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询