项目需要用到一个用 Fortran90 写成的物理计算模型,折腾了一星期才把这个项目编译通过(原项目是 exe 的);现在的问题是我的 VC++工程要调用这个模型,请问是生成库调用方便(看了相关资料 C++和 Fortran 互操作貌似也是个大坑),还是干脆移植到 C++方便?请大虾赐教!
|      1snnn      2017-01-23 09:26:00 +08:00 via Android 库。 重写算法不是那么容易的事情。数值算法很难验证是否没有 bug | 
|      2Neveroldmilk OP @snnn 问题是 fortran 的库调用限制很多: 1 , fortran 是传址的; 2 , fortran 变量必须是全大写且不能超过 31 个字符; 3 , fortran 数组的遍历顺序是列优先等等。 真的很佩服开发 FDS 库的这些人,都啥年代了还用这么远古的语言。 | 
|  |      3jarlyyn      2017-01-23 09:57:56 +08:00 via Android child process , stdin stdout 交互? | 
|      4Neveroldmilk OP 那个倒不至于,我有全部的 fortran 代码,可以直接调用原始接口,但是太蛋疼了。 @jarlyyn | 
|  |      5jarlyyn      2017-01-23 10:05:18 +08:00 | 
|      6Neveroldmilk OP 问题是以后还要改进这部分的代码,所以很痛苦。 @jarlyyn | 
|  |      7zmj1316      2017-01-23 11:23:16 +08:00 有代码不错了,至少不是直接塞你一篇 paper 。。。我也建议不要移植,上库吧 | 
|      8herozhang      2017-01-23 11:45:37 +08:00 | 
|      9Neveroldmilk OP @herozhang  多谢。 | 
|      10Neveroldmilk OP | 
|      11lsmgeb89      2017-01-24 02:09:44 +08:00 可以慢慢移植到 C++ 上, Fortran 不是长久之计。 | 
|      12lgsr      2017-01-24 14:59:12 +08:00 以前上学学的语言就是 fortran.可以编译成 lib 文件给 c 调用。注意传参传址,堆栈恢复 | 
|      13Neveroldmilk OP @lgsr 我现在调用 fortran 的 lib 里 subroutine 不成功,是不是没有在 module 里添加 iso_c_binding 导致的? |