我写了个dll为什么里面的函数只能调用一次呢》?(十万火急)(这个很问题难吗?) (100分)

  • 主题发起人 主题发起人 天宇天蓝
  • 开始时间 开始时间

天宇天蓝

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了个dll为什么里面的函数只能调用一次呢》?(十万火急)
在第一次调用是那都好,第二次就说存取地址错误。程序也就退不出了?
 
DLL里有对象未释放掉。做个保护就可以了。如下:
library PFilter;
uses
ShareMem,
Forms,
ActiveX,
windows,
dtcolumn in 'dtcolumn.pas' {gzbxmfrm};

{$R *.RES}
procedure DLLEntryProc(Reason: Integer);
begin
if (Reason = DLL_PROCESS_ATTACH) or (Reason = DLL_THREAD_ATTACH) then
CoInitialize(nil)
else
CoUnInitialize;
end;

exports
FindData; //输出过程
begin
DLLProc := @DLLEntryProc;
DLLProc(DLL_PROCESS_ATTACH);
end.
 
我有啊!
procedure DLLEntryProc(Reason: Integer);
begin
case Reason of
DLL_PROCESS_ATTACH)://一些处理。
。。。。。。。。。
。。。。。。。。
end;
end;

exports
FindData; //输出过程
begin
DLLProc := @DLLEntryProc;
DLLProc(DLL_PROCESS_ATTACH);
end.

 
把你的代码全部拿出来看一下就知道了。不然我们怎么知道你的问题呢?
 
//Dll工程

library Static_function;


uses
SysUtils,
Classes,
windows,
winprocs,wintypes,
Function_Unit in 'Function_Unit.pas';

{$R *.res}
exports
Getregstr,
Setregstr,
Systemconvert,
Atext;
procedure Dllentrypoint(dw:dword);
begin
case dw of
DLL_PROCESS_ATTACH:Init;
DLL_PROCESS_DETACH :
begin
Desfree;
end;
end;
end;

begin
DllProc:=@dllentrypoint;
Dllentrypoint(DLL_PROCESS_ATTACH );
end.


////dll工程里的一个单元

//一个函数,其实还有黑多。。。
function Atext(text:string):string;
var i:integer;
str:string;
resstr:string;
begin
str:=text;
while length(str)>0 do
begin
i:=pos('''',str);
if i>0 then
begin
resstr:=resstr+ COPY(str,1,i-1)+'''''';
Delete(str,1,i);
end
else
begin
resstr:=resstr+str;
Delete(str,1,length(str));
end;
end;
result:=resstr;
end;
////////////////住程序的一个单元
public
getext:function (text:string):string;stdcall;
{ getconntext:function():widestring;stdcall;
Setconntext:function (context:widestring):boolean;stdcall;
Convert:function(str:string;oldsystem:integer):string;stdcall;
function initial(hd:THandle):boolean;//初始化}
.....//动态加载
@getext:=GetProcAddress(hand,'Atext');

////主程序的调用
showmessage(func.getext('www'));

 
function Atext(text:string):string; <---错误类型
其次调用DLL以后,要FREE

http://www.delphibbs.com/delphibbs/dispq.asp?lid=2224935
 
我有free
freelibry(hand);
类型该是什么呢?pchar?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部