Fortran Coder

查看: 10467|回复: 6
打印 上一主题 下一主题

[编译器] IVF动态链接库的函数的调用接口声明

[复制链接]

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
跳转到指定楼层
楼主
发表于 2016-3-28 17:38:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
!   根据IAPWS-IF97/IFC67编写的动态链接库的函数的调用接口声明
!    专供DEC Visual Fortran(Fortran语言) 使用
!    使用方法:
!    直接把本软件包提供的导入库文件(WASPCN.Lib)和模块文件(WASPCN.f90)加进对应项目,
!    在需要调用的程序文件中use模块文件(WASPCN.f90)即可!
module WASPCN
!DEC$objcommentlib:"WASPCN.lib"
!设定将要使用的标准
!已知压力(MPa)和温度(℃),求比焓(kJ/kg)、比熵(kJ/(kg.℃))、比容(m^3/kg)
Interface
Subroutine PT(P,T,H,S,V,X,R)
    !DEC$Attributes Stdcall,Dllimport,Alias:'PT'::PT
    Real(8)P,T,H,S,V,X
    Integer(4)R
    !DEC$Attributes Value::P
    !DEC$Attributes Value::T
    !DEC$Attributes Reference::H
    !DEC$Attributes Reference::S
    !DEC$Attributes Reference::V
    !DEC$Attributes Reference::X
    !DEC$Attributes Reference::R
End Subroutine
End Interface
end module WASPCN

上述调用接口中:
!DEC$objcomment lib:"WASPCN.lib"
!DEC$Attributes Stdcall,Dllimport,Alias:'PT'::PT
!DEC$Attributes Value::P
这三段语句分别是什么意思哦,我在彭国伦的教材上没有找到详细的解释,还请赐教,如果有这方面详细介绍的书籍,能否分享一下呢,先谢谢了。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2016-3-28 19:16:43 | 只看该作者
!DEC$objcomment lib:"WASPCN.lib"
表示链接时带上 WASPCN.lib 一起链接
!DEC$Attributes Stdcall,Dllimport,Alias:'PT'::PT
表示 PT 采用 stdcall 调用协定。并由 DLL 导入,别名为 PT
!DEC$Attributes Value::P
表示 P 参数采用传值,而不是传址

这些用法都是 IVF 特有的扩展用法,并不是标准的规范。所以很少有教科书提及。
如果你想了解,可以看 IVF 的帮助 《General Compiler Directives》 的章节

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
板凳
 楼主| 发表于 2016-3-29 09:25:38 | 只看该作者
感谢VVT的热情回复!

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
地板
 楼主| 发表于 2016-3-29 10:22:01 | 只看该作者
VVT您好,我在《General Compiler Directives》中看到IVF2013的编译指令说明中是这样写的:
[Fortran] 纯文本查看 复制代码
MODULE MOD1
  INTERFACE
    SUBROUTINE SUB1
    !DIR$ ATTRIBUTES C, ALIAS:'othername' :: NEW_SUB
    END SUBROUTINE
  END INTERFACE
  CONTAINS
    SUBROUTINE SUB2
    CALL NEW_SUB
    END SUBROUTINE
END MODULE

那是不是说不能再用!DEC,必须用!DIR呢?

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1642 元
贡献
709 点

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

5#
发表于 2016-3-29 12:11:17 | 只看该作者
!DEC$ 是由 Digital 公司的 DVF 延续下来的
Intel 为了保持与旧代码的一致性,沿用了 !DEC$

!DIR$ 也可以。两者等效。但是绝大多数程序员还习惯 !DEC$,包括我。

58

帖子

9

主题

0

精华

熟手

F 币
256 元
贡献
163 点
6#
 楼主| 发表于 2016-3-29 14:08:28 | 只看该作者
谢谢fcode的及时回复!

29

帖子

3

主题

0

精华

熟手

F 币
214 元
贡献
112 点
7#
发表于 2016-4-1 11:58:45 | 只看该作者
学习了,每天都有收获!
呵呵
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-26 09:52

Powered by Tencent X3.4

© 2013-2024 Tencent

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