关于DLL的一个问题(100分)

  • 主题发起人 主题发起人 martinqiu
  • 开始时间 开始时间
M

martinqiu

Unregistered / Unconfirmed
GUEST, unregistred user!
现在在使用DLL进行方法的封装,出现了一个问题请高手指教
project1.dll中
function JustfyControl(AControl:TComponent):boolean;stdcall;
begin
if AControl is TButton then
Result:=true
else
Result:=false;
end;
在Project11中
button1Onclick事件中
for i:=0 to self.componentcount-1 do
if JustfyControl(self.component) then
showmessage('true')
else
showmessage('false');

每次返回的都是false,不知道是怎么回事!
 
这个问题很难吗?我不知道!请高手赐教阿!
 
单看你上面的代码,没看出什么问题来!
 
在你的两个工程文件中
加入
uses
sharemem,
dll工程文件
和调用它的工程文件都要加
要放在第一个
同时需要
borlndmm.dll
支持
 
//楼主的问题确实是不能返回真值,单修改为如下就可以解决
//问题,原因不明!

function JustfyControl(AControl:TComponent):boolean;stdcall;
begin
if AControl.ClassName = 'TButton' then
Result:=true
else
Result:=false;
end;
 
楼主: 问题已经找到,就是关于运行时包的问题。在dll的工程选项“Packages"页选上"build runtime with packages"前面那个勾。同时调用的那个程序也是这样做就可以实现你的功能!(注意:里面必须包含"vcl"这个包)
 
接受答案了.
 
后退
顶部