我从网上找了个叫做winGsl的dll,里面有很多科学计算方法。
我想用delphi调用其中的方法,但是不成功。
具体举例:
WINGSLDLL_API double gsl_stats_mean (const double data[], const size_t stride, const size_t n);
我在delphi里这样调用
function gsl_stats_mean(const data:array of double; const stride:DWORD; const n:DWORD):double;stdcall;External 'WinGsl.dll';
不行。加不加stdcall都不行。
请指教应该如何调用啊?
我想用delphi调用其中的方法,但是不成功。
具体举例:
WINGSLDLL_API double gsl_stats_mean (const double data[], const size_t stride, const size_t n);
我在delphi里这样调用
function gsl_stats_mean(const data:array of double; const stride:DWORD; const n:DWORD):double;stdcall;External 'WinGsl.dll';
不行。加不加stdcall都不行。
请指教应该如何调用啊?
解决方案 »
- delphi2007安装后出现F1027 unit not found:'system.pas' or equvalents
- 请问各位如何处理N个客户端连接的问题?
- 我做了一个繁体版本的程序,为什么在我的电脑上可以正常显示,而在台湾那边显示却为乱码?
- 带复选框的TreeView
- 在使用F1BOOK的过程中,为什么 a: F1CellFormat; 这条语句不能通过?我用的是F1BOOK3.0
- 如何使子窗口在panel前面显示?高难度问题.
- ACCESS Violation at address 004CBAE5 in module不能执行
- 关于tcxmaskedit的问题
- 如何用image读ico文件?
- 如何将query中的内容输出到文本文件,然后还能将该文本文件再导入进来?急急急!!!!!!!!!!!
- select中带有dateTimepicker值
- select中带有dateTimepicker值
1.有可能是声明函数写的有问题。
2.要用工具,看看那个dll的函数接口声明函数是不是开放了,就是,能被第三方软件调用。
procedure TForm1.Button2Click(Sender: TObject);
var
td:array of double;
s:string;
begin
setlength(td,5);
td[0]:=1;
td[1]:=6.235;
td[2]:=1;
td[3]:=2;
td[4]:=1;
s:=floattostr(gsl_stats_mean(td,1,5));
edit2.Text:=s;
end;
所得的返回值怎么是1啊?我又试了试求gsl_stats_max,返回的也是1.我还是什么地方没写对吧?
我对c不大了解,看网上说cdel要调用者自己负责清栈,那么delphi里还应该做哪些额外的工作么?
我是从这个网址下载的dll
http://www6.in.tum.de/~kiss/WinGsl.htm
我下的是1.4.02版本。vc++编译的。
一种就是delphi 传的是数组指针,一种就是传的是0元素指针。
搂主可以多测试几次,应该能得到正确结果的。
不过我又找到了一个用pascal写的数学库,叫什么tpmath
对比了一下tpmath和wingsl的运算速度,算平均数c写的wingsl还不如tpmath呢。
供其它童子参考吧。