300分:急!!如何在cb中调用vb编写的dll?(300分)

  • 主题发起人 主题发起人 xiaoshi
  • 开始时间 开始时间
X

xiaoshi

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在用cb编写一个程序需要调用别人用vb编写的dll.<br>该dll中只有两个函数 &nbsp;Sub glsy(ByRef a As Single,ByRef b As Single,<br>&nbsp;ByRef c As Single,ByRef d As Single,ByRef a1 As Single,ByRef b1 As Single,<br>&nbsp;ByRef c1 As Single,ByRef d1 As Single)<br>Sub qjsy(ByRef q() As Single,ByRef w() As Single)<br>动态调用dll的cb原码;<br>void __fastcall TForm1::Button1Click(TObject *Sender)<br>{<br>&nbsp;float x1=1,x2=1,x3=1,x4=1,x5=1,x6=1,x7=1,x8=1;<br>&nbsp;float *y1=&amp;x1,*y2=&amp;x2,*y3=&amp;x3,*y4=&amp;x4,*y5=&amp;x5,*y6=&amp;x6,*y7=&amp;x7,*y8=&amp;x8;<br>&nbsp;HINSTANCE hInst=NULL;<br>&nbsp;hInst=LoadLibrary("d://temp//rlsy.dll");<br>&nbsp;if(hInst)<br>&nbsp; {<br>&nbsp; &nbsp;glsy=(void (__pascal *)(float *,float *,float *,<br>&nbsp; &nbsp; &nbsp;float *,float *,float *,float *,float *))GetProcAddress(hInst,"glsy");<br>&nbsp; &nbsp;if(glsy)<br>&nbsp; &nbsp; &nbsp;glsy(y1,y2,y3,y4,y5,y6,y7,y8);<br>&nbsp; &nbsp;else<br>&nbsp; &nbsp; &nbsp; ShowMessage("Cannot obtain function pointer");<br>&nbsp; }<br>&nbsp;else<br>&nbsp; &nbsp;ShowMessage("Cannot load rlsy.dll");<br>&nbsp;FreeLibrary(hInst);<br>}<br>执行后,发现不能获得函数指针.<br>请给位大虾不吝赐教,小弟感激不尽!<br><br>
 
用win9x、nt4等的快速查看(win2000没有)(在资源管理器找到那个dll右键菜单选快速查看)<br>看输出函数的实际名字(比如,有时候不是叫glsy,而是叫 glsy$... 什么乱七八糟的,<br>要按这个名字)
 
按照大虾所说的方法,我查看了一下,发现该VB的DLL文件中,没有导出表,<br>没有一个函数被导出。是不是由于这个原因,所以不能获得函数地址。<br>该VB的DLL文件据编写人讲,在VB下是可以调用的。是不是该VB的DLL文件如果要用于<br>CB,需要作一些处理。<br>还望大虾继续赐教,小弟先行谢过!<br>
 
没有export的dll怎么用?好象没办法
 
xiaoshi:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。<br><br><br>
 
察看有关资料,资料上肯定有
 
TDump程序可以看的。
 
多人接受答案了。
 
后退
顶部