计算化学公社

标题: 从C++ 调用 Octave [打印本页]

作者
Author:
zhanfei    时间: 2015-11-24 21:53
标题: 从C++ 调用 Octave
本帖最后由 zhanfei 于 2015-11-25 11:55 编辑

关于Octave的C++调用。官方的推荐是使用自带的mkoctfile --link-stand-alone ,mkoctfile是作为编译和链接的wrapper。yum安装的记得安装develop部分,只安装octave主体,没有mkoctfile
如果不是主要调用Octave,还是想用简单的编译命令的话,注意mkoctfile命令提供了-p VAR 即打印VAR变量的方法。根据VAR
的名字很容易看出来选项的意义。
主要的几个
ALL_CXXFLAGS   ALL_LDFLAGS
LFLAGS 等等 LIBOCTAVE LIBOCTINTERP 是两个库-loctave -loctinterp
总之就是mkoctfile -p VAR 看选项根据情况取舍
使用时候,比如编译Octave手册中的简单例子embedded.cc

g++ -I/usr/include/octave-3.8.2/octave/.. -I/usr/include/octave-3.8.2/octave -L/usr/lib64/octave/3.8.2 -L/usr/lib64 -loctave -loctinterp embed.cc
或者
icpc -I/usr/include/octave-3.8.2/octave/.. -I/usr/include/octave-3.8.2/octave -L/usr/lib64/octave/3.8.2 -L/usr/lib64 -loctave -loctinterp embed.cc
就是我们常见的include文件和库文件的路径 和两个库octave octinterp。
这里要吐槽的是
1 Octave洋洋洒洒900多页写了很多函数用法云云,最重要的调用却一笔带过。窃以为有空写个wrapper还不如直接文档中把选项说清楚。
2 像很多库都喜欢弄个编译器 链接器的wrapper。(试想如果你希望用到多个库,然而这多个库链接时都是用wrapper。。。然后。。。)
mpi这种就忍了,但是一般的库,还是希望能顺便给个输出所有编译,链接的选项,方便我们自己取舍,输出分两大项一项编译选项,一项链接选项就挺好,。Octave虽然有此功能但是设置变量太多了(好在变量名字的意思好猜)。

至于win下的调用我放弃用icl和cl了,还是用原生的mkoctfile吧,在stackflow上看了几个回复,自己到win上用VS试的时候就各种error,而且VS版的3.6之后也没后续了。

评论 原本以为Octave能提供一个统一操作的,包含各种数值计算的库,浏览了liboctave.pdf文档后发现自己想多了,相比Octave本身的强大功能,Octave提供的库还不如gsl广泛。
很多介绍数值计算库的帖子对Octave库的描述有些言过其实。总之就是大家该用gsl和mkl的继续用,除非Octave哪天提供更多的函数和更详细的文档








欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3