一个C++翻译成delphi的问题(200分求教)

Seatune 2004-11-26 10:37:01
本人欲将libsvm用Bcb做成dll供delphi调用,其部分声明如下:
struct svm_node
{
int index;
double value;
};
struct svm_parameter
{
int svm_type;
int kernel_type;
...
};
struct svm_model
{
svm_parameter param; // parameter
int nr_class;
int l; // total #SV
svm_node **SV; // SVs (SV[l])
double **sv_coef; // coefficients for SVs in decision functions (sv_coef[n-1][l])
//上两句每句有两个*,该怎么翻译成Pascal才能在下面的函数中正确调用?SV好像是指针数组在svm_predict中初始化。
...
};
__declspec(dllexport) double _stdcall svm_predict(const struct svm_model *model, const struct svm_node *x);
不知哪位大虾,能帮忙翻译一下。
...全文
71 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
beyondtkl 2004-11-26
  • 打赏
  • 举报
回复
给你调用过程 主要是分配内存 然后自己往里面填充...

var
model: svm_model;
x: svm_node;

param: svm_parameter;
SV: ppsvm_node;
sv_coef: ppdouble;

I: Integer;
tmp: ppdouble;
tmp2: ppsvm_node

begin
param.svm_type := 0;
param.kernel_type := 0;

model.param := param;
model.nr_class := 0;
model.l := 0;

GetMem(SV, 10 * 4); // 分配10长度为10 分配第一维
tmp2 := SV;
for I := 0 to 9 do
begin
GetMem(tmp2^, sizeof(svm_node)); // 为每一维 分配 20 注意 长度为 sizeof(svm_node)
Inc(tmp2);
end;

GetMem(sv_coef, 10 * 4); // 分配10长度为10 分配第一维
ppdouble := sv_coef;
for I := 0 to 9 do // 为每一维 分配 20
begin
GetMem(ppdouble^, 20 * 4);
Inc(ppdouble);
end; //
// 所以 sv_coef 就是一个 二维double指针 相当于 double aaa[10][20]

model.SV := SV;
model.sv_coef := sv_coef;

x.index := 0;
x.value := 0;
// call like this

svm_predict(psvm_model(@model), psvm_node(@x));
end;

// 有问题 请再说...
Seatune 2004-11-26
  • 打赏
  • 举报
回复
感谢beyondtkl,本来应该给你200分,但CSDN只让我给100分。不知另100分该怎么给你加
beyondtkl 2004-11-26
  • 打赏
  • 举报
回复
type
pdouble = ^double;
ppdouble = ^pdouble; // 二维指针

type svm_node = record
index: Integer;
value: Double;
end;
psvm_node = ^svm_node;
ppsvm_node = ^psvm_node; // 二级指针

type svm_parameter = record
svm_type: Integer;
kernel_type: Integer;
end;
psvm_parameter = ^svm_parameter;

type svm_model = record
param: svm_parameter;
nr_class: Integer;
l: Integer;
SV: ppsvm_node;
sv_coef: ppdouble;
end;
Psvm_model = ^svm_model;

function svm_predict(const model: psvm_model; const x:psvm_node):double;stdcall;externel '***.dll' name 'svm_predict';
beyondtkl 2004-11-26
  • 打赏
  • 举报
回复
OK 马上给你翻译..

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧