倾我所有:dlls在VB中的调用(5分)

  • 主题发起人 主题发起人 gutian
  • 开始时间 开始时间
G

gutian

Unregistered / Unconfirmed
GUEST, unregistred user!
我用DELPHI写了一个DLLS(对COM的读写,用的是SPCOMM),我可以在DELPHI,VC++中调用<br>DLLS,但是在VB中如果执行,则出现DLLS调用出错(49 错误)。<br>为什么
 
哪位老兄能够告诉我如何向DELPHI(DLLS)中传递变量。<br>function writetrack(track:integer;trackinfo:pchar):integer;<br>我在DLLS如上声明,如果用DELPHI调用则没有问题,而用VC,VB调用都出错,参数不知<br>是什么玩意
 
可能是调用方式在作怪<br>函数的调用方式有: stdcall, pascal, cdecl, safecall和register等.<br>差别在于参数入栈方式, 返回值以及寄存器的使用上.<br><br>&nbsp; &nbsp; &nbsp; &nbsp; 参数入栈顺序 &nbsp; &nbsp;返回值 &nbsp; &nbsp;寄存器作为传递参数<br>stdcall &nbsp; 右到左 &nbsp; &nbsp; &nbsp; 自动返回 &nbsp; &nbsp;不使用<br>pascal &nbsp; &nbsp;左到右 &nbsp; &nbsp; &nbsp; 自动返回 &nbsp; &nbsp;不使用<br>cdecl &nbsp; &nbsp; 右到左 &nbsp; &nbsp; &nbsp; 不自动返回 &nbsp;不使用<br>safecall &nbsp;右到左 &nbsp; &nbsp; &nbsp; 自动返回 &nbsp; &nbsp;不使用<br>register &nbsp;左到右 &nbsp; &nbsp; &nbsp; 自动返回 &nbsp; &nbsp;使用<br><br>参考: Delphi help中的Calling conventions
 
我使用SPCOMM来做DLLS,我使用READTRACK(INTEGER):INTEGER向COM提出请求,但<br>返回的数据不能直接从READTRACK取回,因为数据取回在ONRECEIVEDATA()事件中。我<br>想用另一个借口函数GETSTR:PCHAR取数据,但是我发觉如果调用时,如果在一个事件中<br>先执行READTRACK,然后执行GETSTR(),根本取不到数据,因为系统是在GETSTR后才有数据<br>返回。<br>所以我必须,调用时,用两个事件来完成(也就是要分两步)。不知如何改进
 
后退
顶部