动态库的参数传递问题,急!(20分)

  • 主题发起人 主题发起人 黑衣人
  • 开始时间 开始时间

黑衣人

Unregistered / Unconfirmed
GUEST, unregistred user!
动态库中的函数:<br>function ComboTwoString(FristStr:WideString;SecondStr:WideString):WideString;export;<br>begin<br>&nbsp; result := FirstStr + SecondStr;<br>end;<br><br>exports<br>&nbsp; ComboTwoString name 'cts';<br>--------------------------------------------------------------------------------<br>调用的程序如下:<br>procedure TForm1.Button2Click(Sender: TObject);<br>var dllModule:THandle;<br>&nbsp; &nbsp; farDllPro:TFarProc;<br>&nbsp; &nbsp; sFirstStr,sSecondStr,sComboStr:string;<br>begin<br>&nbsp; &nbsp;sFirstStr := trim(Edit1.Text);<br>&nbsp; &nbsp;sSecondStr:= trim(Edit2.Text);<br>&nbsp; &nbsp;dllModule := LoadLibrary('MyDll.Dll');<br>&nbsp; &nbsp;farDllPro := GetProcAddress(dllModule,'cts');<br>&nbsp; &nbsp;//下面要如何将sFirstStr,sSecondStr传递到动态库中的函数并将处理后的值赋予sComboStr????<br>&nbsp; &nbsp;……<br>end;<br>
 
建议不要用string类,如要用,必须加载borlndmm.dll。
 
书上没有说要加载borlndmm.dll呀,直接load就可以了~~<br>能不能具体点?
 
uses ShareMem
 
你用delphi开一个dll工程,看看开头一段话。
 
Delphi的String类型存储与PChar是不一致的,<br>头上几位是字符串的长度,当传给标准DLL时<br>是作为PChar处理的<br>建议最好使用PChar传递<br>
 
使用widestring可以作為參數傳遞到動態庫中,返回值也可以是widestring.<br>sComboStr:=farDllPro(sFirstStr,sSecondStr); 這樣不行嗎?<br>
 
后退
顶部