怎么样使用Fortran实现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,同样可以执行。
本文地址:http://www.45fan.com/dnjc/69473.html