计算化学公社

 找回密码 Forget password
 注册 Register
Views: 8093|回复 Reply: 0
打印 Print 上一主题 Last thread 下一主题 Next thread

[C/C++] 从C++ 调用 Octave

[复制链接 Copy URL]

265

帖子

5

威望

2363

eV
积分
2728

Level 5 (御坂)

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 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哪天提供更多的函数和更详细的文档



评分 Rate

参与人数
Participants 2
eV +10 收起 理由
Reason
卡开发发 + 2 实在没几分了
sobereva + 8 欢迎讨论

查看全部评分 View all ratings

本周目已沉沦,下个世界再会

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 19:20 , Processed in 0.152416 second(s), 22 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list