pb调用delphi写的dll,其中有一个参数是数组(100分)

  • 主题发起人 主题发起人 我需要充电
  • 开始时间 开始时间

我需要充电

Unregistered / Unconfirmed
GUEST, unregistred user!
pb调用delphi写的dll,其中有一个参数是数组,但pb提示错误:
bad runtime function reference
其中pb的调用方式是:li_Rtn = FSendEmail(1, StrArgs)
pb中的声明:
FUNCTION int fsendemail(int v1, ref string v2[]) Library "E:/MyProgram/dll/PSdEmail_dll.dll"
---------
delphi的代码是:
library PSdEmail_dll;
uses
SysUtils,
Classes,
Dialogs,
UEmail in 'UEmail.pas';

{$R *.res}
function FSendEmail(const v1: integer; v2: array of string):integer;StdCall;
var
iLowIndex, iHighIndex: Integer;
i: Integer;
StrAry: array of string;
begin
SetLength(StrAry, 10);
iLowIndex := Low(v2);
iHighIndex := High(v2);
For i := iLowIndex to iHighIndex do
begin
ShowMessage(v2 + '-The index is ' + IntToStr(i));
end;
Result := v1;
end;
exports
FSendEmail;
end.
 
这家伙不是水平太次就是成心不让你用他的DLL啊,本来在写DLL的时候都不建议用
string类型,而且动态数组也不要用,他非要用这个,根本就是给你找麻烦,而且
你还用的是PB
 
呵呵,楼上老兄,谢谢你的忠告,但是pb调用delphi写的dll如果是字符串的话最好是用string,如果不用string很容易不出问题或者不能调用,至于动态数组是需要这样做的我也没办法,业务需要呀。
 
动态连接库,最好不要使用String类型或复杂数组类型,
他们的存储结构不一样,最好传递PChar指针
张兄说的没错,动态链接库中使用字符串String或动态数组,需要使用Borlndmm.dll
来进行共享内存管理,前提是都是用Delphi写,
用了String类型才容易出问题呢,动态数组更是用不得
 
多谢LiChaoHui
 
PB使用的好像是 0结尾串,和C语言的差不多
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部