Delphi调用VC的DLL的问题(二维数组做参数) ( 积分: 30 )

  • 主题发起人 主题发起人 sy0116
  • 开始时间 开始时间
S

sy0116

Unregistered / Unconfirmed
GUEST, unregistred user!
VC中:<br>PrintMap(int&nbsp;DelphiMAP[][9])<br>{<br>&nbsp;&nbsp;int&nbsp;x&nbsp;=&nbsp;0,y&nbsp;=&nbsp;0;<br>&nbsp;&nbsp;for&nbsp;(x&nbsp;=&nbsp;0&nbsp;;x&nbsp;&lt;&nbsp;9&nbsp;;x++)<br>&nbsp;&nbsp;{&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(y&nbsp;=&nbsp;0;y&nbsp;&lt;&nbsp;9&nbsp;;y++)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(Map[x][y]&nbsp;&lt;&nbsp;'B')<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DelphiMAP[x][y]&nbsp;=&nbsp;'0'&nbsp;+&nbsp;Map[x][y];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map[x][y]&nbsp;=&nbsp;'X';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>}<br><br>Delphi中:<br>Type<br>&nbsp;&nbsp;TMap=array&nbsp;[0..8,0..8]of&nbsp;Integer;<br>&nbsp;&nbsp;Map:TMap;<br>procedure&nbsp;PrintMap(DelphiMap:TMap);external&nbsp;'fordelphi.dll';<br><br>然后这样调用:<br>PrintMap(map);<br>但是报错,请问各位高手要怎样才能正确调用这个DLL的导出函数呢?或者怎样修改VC写的DLL来让Delphi可以调用它呢?
 
不要用2W数组,指针不明确。
 
但我不得不用二维数组啊
 
我也遇到了&nbsp;VC中2级指针转换的问题<br>&nbsp;&nbsp;{extern&nbsp;int&nbsp;cl_scanfile(const&nbsp;char&nbsp;*filename,&nbsp;const&nbsp;char&nbsp;**virname,&nbsp;unsigned&nbsp;long&nbsp;int&nbsp;*scanned,<br>&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;struct&nbsp;cl_engine&nbsp;*engine,&nbsp;const&nbsp;struct&nbsp;cl_limits&nbsp;*limits,&nbsp;unsigned&nbsp;int&nbsp;options);}<br>&nbsp;&nbsp;TClam_scanfile=function&nbsp;(const&nbsp;filename:&nbsp;PChar;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{var}&nbsp;virname:&nbsp;PChar;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;scanned:&nbsp;unsigned_long_int;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;engine&nbsp;:&nbsp;Pcl_engine;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;limits:&nbsp;Tcl_limits;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options:&nbsp;unsigned_int&nbsp;):&nbsp;Integer&nbsp;;&nbsp;cdecl;<br><br>加一个&nbsp;var&nbsp;就报错~~~&nbsp;去掉了不报错,但只能得到第一个字串~~~
 
不得不用的话那证明设计问题。
 
C语言的库是&nbsp;别人写的~~<br><br>delphi调用而已~~&nbsp;&nbsp;大家说说&nbsp;VC里的2级指针到底该&quot;翻译&quot;成什么?
 
非要这样跟踪一下那个dll的参数结构和指针调用,然后构造一个相应的结构来传参数。
 
&quot;构造一个相应的结构&quot;&nbsp;&nbsp;<br><br>不好做哦<br><br>A:array&nbsp;of&nbsp;pchar<br><br>然后给&nbsp;A&nbsp;一个足够大的空间
 
多人接受答案了。
 

Similar threads

后退
顶部