为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Scilab与VC

2013-01-08 2页 doc 26KB 20阅读

用户头像

is_996659

暂无简介

举报
Scilab与VCScilab与VC++之间接口 今天成功地实现了Scilab与VC++之间的联结。故将基本过程记录如下: 1. Scilab与VC++之间主要通过动态链接库进行接口(注意:VC++是Win32平台下的,因此本文主要基于Win32平台);因此,要建立Scilab与VC++之间例程的接口,首先需要利用VC++创建相应的动态链接库。 假定我们利用VC++建立一个名字为sciVC.dll的动态链接库,该动态库中有一个名为SciToVC的函数,其原型如下: void SciToVC(int *, double *, ch...
Scilab与VC
Scilab与VC++之间接口 今天成功地实现了Scilab与VC++之间的联结。故将基本过程记录如下: 1. Scilab与VC++之间主要通过动态链接库进行接口(注意:VC++是Win32平台下的,因此本文主要基于Win32平台);因此,要建立Scilab与VC++之间例程的接口,首先需要利用VC++创建相应的动态链接库。 假定我们利用VC++建立一个名字为sciVC.dll的动态链接库,该动态库中有一个名为SciToVC的函数,其原型如下: void SciToVC(int *, double *, char *); 那么在Scilab里调用该函数的过程如此下: 2. 利用Scilab的link命令,连接sciVC.dll库和函数SciToVC,命令如下: link(“C:\sciVC.dll”,”SciToVC”,”C”) 这里,link的C原型为: int link(const char *PathOfDll, const char *NameOftheCalledFunction, const char * CorFortran); 其三个参数含义如下: 第一个参数:动态链接库的全路径; 第二个参数:被调函数的名字(大小写敏感); 第三个参数:”C”表示是C语言接口,如果是Fortran语言则为”F”; 3. 利用Scilab的fort命令,调用被成功连接的函数。其命令如下: res=fort("SciToVC",x,1,”i”, y,2,”d”, str,3,”c”, “out”) 这里fort的原型为 [y1,...,yk]=fort("ident",x1,px1,"tx1",...,xn,pxn,"txn", "out",[ny1,my1],py1,"ty1",...,[nyl,myl],pyl,"tyl") 其参数的含义如下表: 参数 说明 "ident" : 为字符串,被调函数的名字; xi : 传给被调函数对应于的第i个形参的实参; pxi: 实参xi对应于被调函数形参的位置编号(position of xi)。例如,xi为对应于第二个形参的实参,则pxi为整数2; txi: 被调函数对应pxi位置的形参类型(type of xi),分别用"d" , "r" , "i" or "c"代表double, float, int,和 char*。 “out”: 关键字,在Scilab与C++接口中必须的(C与Fortran可以省略),是被调函数输入参数与输出参数的分割字。 [nyi,myi]: 第i个输出参数的维数,以矩阵形式表示。如[1,1]表示输出一个数,而[1,2]表示输出一个1x2矩阵。这个参数是必须的而且要跟其他输出相容。 pyi 第i个输出参数的位置 tyi 第i个输出参数的类型 例如,在上述调用res=fort("SciToVC",x,1,”i”, y,2,”d”, str,3,”c”, “out”)中,个参数的含义如下 x,对应第一个形参的实参,int类型;y对应第二个形参的实参,类型为double;str为对应第三个形参的实参,类型为字符串型;该函数没有参数输出。如果上述调用为: res=fort("SciToVC",x,1,”i”, y,2,”d”, str,3,”c”, “out”,[1,1],1,”i”) 则表示第一个形参(注意:不是实参x)的结果将由fort返回在res里面。 最后需要说明的是,由于Scilab的变量都可以视为矩阵,建议将动态链接库里各个函数的参数全部设计成指针类型。 为了方便Scilab用户调用我们的函数,编写一个scilab脚本函数,把link, fort一起封装起来。例如,对于上述SciToVC函数的调用,可以写成一个如下的CallVC函数 function [y]=CallVC(aInt, aDouble, aString) x=link(“sciVC.dll”,”SciToVC”,”C”) if(x<0) y=-1 endif //测试连接是否成功,不成功则返回-1 y=fort(”SciToVC”,aInt,1,”i”,aDouble,2,”d”,Astring,3,”c”,”out”) endfunction 这样,只要sciVC.dll在scilab的标准搜索路径里,就可以很方便地调用dll里的SciToVC函数了。
/
本文档为【Scilab与VC】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索