delphi如何调用VC编写的DLL,且这个DLL为动态数组啊,调用函数为int getdata(Carray(long,long),*pta),300分相送.

  • 主题发起人 主题发起人 匪匪
  • 开始时间 开始时间

匪匪

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi如何调用VC编写的DLL,且这个DLL为动态数组啊,调用函数为int getdata(Carray(long,long),*pta),300分相送.老大帮我啊.在线等待.(300分)<br />[:(]
delphi如何调用VC编写的DLL,且这个DLL为动态数组啊,调用函数为int getdata(Carray(long,long),*p),500分相送.老大帮我啊.
这个函数的功能不是很清楚.只是返回这个一维数组的值.
该怎么做啊.
我是这样做的,不行啊.
function button1click(sender:TObject);
var
a:array of integer;
vResult:integer;
begin
vResult:=getdata(a);
end;
 
写的清楚点
 
不是啊,其实就是在DELPHI中调用VC写的一个DLL,而这个DLL只知道这个函数getdata.而这个函数里面是动态数组,那如何才能在DELPHI中调用这个函数来取得值.
 
函数VC的原型是怎么声明的?
 
那个程序是我随便写的,关于如何调用DLL我知道,就是不知道那个DLL中的动态数组我在DELPHI中如何访问了.比如我在一个按钮Button1Onclick中调用这个函数,再把显示的结果显示到StringGrid中去
 
int getdata(CArray(long,long),*p)
 
在两种语言之间通过DLL传递对象参数是不现实的,
还是改改DLL的函数接口吧,
用基础数据类型做参数
譬如可以这样
int GetData(char *Buff, int BuffLen)
动态连接库,将数据写入调用者提供的内存,
Windows的很多API函数都是采用这种接口的方法的
当然也可以实现COM对象,传递Variant型参数就更灵活了
双方要沟通需要"共同语言"
 
可是就要用这种方法实现啊,怎么办啊?我在DELPHI中做了一个动态数组,可是不知道和这个DLL函数中的动态数组怎么联系用.55555~
 
直接传地址
 
怎么做啊能写个程序吗.
 
我的QQ:25950596
 
1. delphi 中没有 CArray, VC中也没有 Delphi 概念的生存期自管理的动态数组
2. 如果对方的 Dll 参数是 CArray,您将不得不使用 MFC
-------------------------------------------------------------------------------
>> 在两种语言之间通过DLL传递对象参数是不现实的
除非这两种语言中都有相同的对象(在内存中相同),比如基础数据类型[:)]
lich 讲的十分到位,一语中的。
-------------------------------------------------------------------------------
>> 直接传地址
就是 lich 的方法。
-------------------------------------------------------------------------------
>> int getdata(Carray(long,long),*p)
中间是不是多了一个","?
-------------------------------------------------------------------------------
其实这个问题换一个角度考虑一下:您可以用 Delphi 写个 Dll,参数是 TForm
让给你 Dll 的那位先生/女士调用一下[:D]
-------------------------------------------------------------------------------
 
其实程序的功能很简单,就是要我调用他的DLL中的这个函数只是这个函数是一个动态数组了要是其它的参数就好办了,只是这个不好办.
那如何传地址啊?
 
是多了个逗号.
 
如果动态链接库要提供给别的语言使用,
函数接口是不应该这么设计的,
这是编写动态连接库的人的失误,
只能改这里,才能解决问题
to 一曲新词酒一杯:
看来你Delphi学的还挺不错的,而且还用VC
 
算了啊分给你们吧.
一曲新词酒一杯能做个朋友吗?
我的QQ是:39576450
还有LICH,爱元元的哥哥我已经加入了.
 
不知道函数定义的原型我也没办法:(
 
函数原型为:
int getdata(CArray(long,long) *p)
 
希望你能把你所有的代码贴上来,
不然大家也无法分析呀,
或许大家会给你一个更好的答复呢,
呵呵~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部