还有关于DLL的问题!(100分)

  • 主题发起人 主题发起人 tgangt
  • 开始时间 开始时间
T

tgangt

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:<br>&nbsp; 1。如何在DLL中设入全局常量,可以让调用的外部程序(EXE程序)使用??<br>&nbsp; 2。我在form1中调用了一个DLL库中的函数,在form2中又要使用这个函数,如何可以不再<br>调用??<br><br>谢谢!
 
1、通过接口Export使用var来传递。<br>
 
to yzhshi<br>能否详细些,我第一次搞DLL,谢谢了!
 
这个意思:<br>procedure ShowFormInDLL(var aaa: TList);<br>exports ShowFormInDLL;<br><br>调用的时候,为aaa分配好空间,需要传递回来参数的时候只是简单的aaa.add了。
 
to yzhshi<br>还是不太明白!不好意思!<br><br>您有QQ号吗??我的是6324232还是在QQ上找您吧!
 
1.导出的接口函数中使用变参<br>2。你的意思我不大明白
 
对不起,我没有QQ[:D][:D][:D],真的!<br>就是说是通过指针将数据返回。Var,可以在两者之间来传递数据的,其实如果使用<br>TList,不用var都可以。<br>
 
不好意思,能否再详细些啊??我可能是太菜了!呵呵!<br>第一个问题:<br>&nbsp;比如,我在程序中有<br>&nbsp;const <br>&nbsp; aaa='this is test';<br>.........<br>&nbsp; <br>&nbsp;edit1.text:=aaa;<br>那我如何把‘aaa'放入DLL库中呢??又如何在程序中调用??谢谢了!<br><br>第二个问题:<br>&nbsp;如果我在一个DLL库中有一个函数是:<br>&nbsp; function test(ii:integer):integer<br>&nbsp; begin<br>&nbsp; &nbsp; Resut:=ii+1;<br>&nbsp; end;<br>那我在外部的程序中调用这个函数:<br>&nbsp; 在FROM1中我定义function test(ii:integer):integer; External 'test.dll';是可以用的,但<br>form2里我又要用到这个函数,编译时就出现“没有定义”怎么办啊??我想在form1中定义好,<br>其它form里就不用再定义了,如何做呢??<br><br><br>谢谢各位啦!!!
 
第一个很正常,你直接传递进去就可以了。<br>使用pchar 类型足够。<br>动态库里面:<br>procedure ShowFormInDLL(var aaa: pChar);<br>exports ShowFormInDLL;<br><br>调用的时候。<br>ShowFormInDLL(pChar(Edit1.Text));
 
第二个更简单了,你将声明放在公共函数里面就好了,看一下Windows.pas文件,你就会明白的。
 
1.Dll中写函数<br>&nbsp; function GetConst(I:integer):string<br>&nbsp; begin<br>&nbsp; &nbsp; case I of<br>&nbsp; &nbsp; &nbsp; 1:result:= aaa;<br>&nbsp; &nbsp; &nbsp; 2:result:= bbb;<br>&nbsp; &nbsp; &nbsp; 。。。<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br>&nbsp; <br>&nbsp; edit1.text:= GetConst(1);<br><br>2. 你看一下form2的Unit有没有uses form1的Unit;
 
后退
顶部