Fortran Coder

查看: 15444|回复: 10
打印 上一主题 下一主题

[混编] 关于混合编程fortran调用C的接口问题?

[复制链接]

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2015-12-23 10:35:50 | 显示全部楼层
第24行
integer(c_int) subroutine bisrch  BIND(C, Name="bisrch" )
改为
subroutine bisrch()  BIND(C, Name="bisrch" )

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2015-12-23 11:10:08 | 显示全部楼层
你需要把所需的变量传递过去。把计算结果传递回来。混编并不是彻底的打通 fortran 和 c ,让他们可以自由的访问彼此的变量。

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2015-12-23 18:32:32 | 显示全部楼层
1. function 和 subroutine 都可以。并没有本质区别。
2. 你必须把你所需要传递的变量都写在虚参列表里。
3. 所有的虚参都需要定义
4. 我建议你先学会如何单独使用 Fortran 的 function 和 subroutine,然后再学习混编。

1967

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1370 元
贡献
581 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2015-12-23 22:33:19 | 显示全部楼层
1. 关于 subroutine 和 function,本质上是一样的,当然写法会有一些差别。详情你可以观看本站视频教程 http://v.fcode.cn/video-subroutine_and_function.html
2.混编是需要两种语言彼此配合的,而不是随意改动其中一个。
3.你在 fortran 里面是写了参数了,可是 C 语言的代码里并没有对应的“虚参”
4.我强调了很多很多次,让你先学会单独使用 fortran 的函数和子程序。然后再学习混编。你连一点点函数调用的“概念”都没有,怎么可能学会混编呢?
5.如果你要使用 common 来共享数据,那么 fortran 也有办法实现。详情请参考《Modern Fortran Explained》第12章
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-19 17:50

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表