用Fortran来实现DLL的编程和应用(1)

这篇博客通过一个简单的例子介绍了如何在Fortran中创建和使用DLL。首先,创建了一个名为dlltest的DLL项目,包含一个用于初始化数组的SUBROUTINE。接着,创建了Windows Console应用程序dlluse,该程序调用了DLL中的SUBROUTINE并显示结果。注意,DLL与EXE的编译模式需一致,如Debug与Debug或Release与Release。即使不定义接口,也能直接调用DLL中的函数。
 
通常我们应用Fortran的时候,都是用Fortran实现一些底层的数值计算,而在图形的输入输出方面是利用其他语言来实现。因此将Fortran部分编译成一个DLL是一个很好的管理方式,因此,我这里来用一个简单例子来说明在Fortran中实现DLL,并在Fortran中调用这个DLL。
一、第一个简单的例子
1           先编写DLL的程序
1.1          生成一个DLL的Project: dlltest
1.2          新建一个dlltest.f文件,输入如下内容:

 
    SUBROUTINE ARRAYTEST(arr)
    !DEC$ ATTRIBUTES DLLEXPORT :: ARRAYTEST
         REAL(4) arr(3, 7)
         INTEGER i, j
            DO i = 1, 3
                  DO j = 1, 7
                         arr (i, j) = 11.0 * i + j
                  END DO
            END DO
    END SUBROUTINE
1.3          编译,连接,生成所需的DLL和lib。
 
2           编写应用这个DLL的EXE。
2.1          新建Windows Console类型的Project:dlluse
2.2          新建一个dlluse.f文件,输入如下内容:
         PROGRAM MAIN
 
         INTERFACE
          SUBROUTINE ARRAYTEST (rarray)
          !DEC$ ATTRIBUTES DLLIMPORT :: ARRAYTEST
                   REAL rarray(3, 7)
          END SUBROUTINE ARRAYTEST
         END INTERFACE
 
 
         REAL*4 RARRAY(3,7)
         INTEGER I,J
 
         CALL ARRAYTEST(RARRAY)
 
         DO I=1 , 3
                   DO J=1 , 7
                            WRITE(*,*) RARRAY(I,J)
                   END DO
         END DO
 
         END
2.3          将1.1中所建立的dlltest.lib文件加入到Project中
2.4          编译连接,能成功建立dlluse.exe文件。
 
3           运行
将dlltest.dll这个文件复制到dlluse.exe文件所在的目录,也就是说,将这两个文件放在一个目录下,从而可以运行dlluse.exe。
 
4           需要注意的是,如果dlltest.dll是用Debug模式建立的,那么dlluse.exe也应该是按Debug模式建立。反之,对于Release模式也应该如此。
 
5           哈哈,也可以不用建立interface,同样可以执行。
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值