利用FORTRAN建立动态链接库的步骤如下
- 格式:doc
- 大小:20.50 KB
- 文档页数:1
动态链接库教程动态链接库(Dynamic Link Library,简称DLL)是一种可由多个程序共享的库文件,它包含了一组函数和数据,可以在程序运行时加载和调用。
DLL 文件可用于将一些通用的功能封装成函数,供多个程序调用,从而提高代码的复用性和开发效率。
本文将详细介绍动态链接库的概念、使用方法以及制作过程。
一、动态链接库的概念动态链接库是一种包含了函数和数据的库文件,它可以在程序运行时被加载和调用。
与静态链接库相比,动态链接库的优势在于节省内存空间和提高代码的复用性。
当多个程序需要使用同一个功能时,它们可以共享同一个DLL文件,避免了重复编写相同的代码。
二、动态链接库的使用方法在使用动态链接库之前,我们首先需要了解动态链接库的编译、加载和调用过程。
1.编译动态链接库在创建 DLL 文件时,我们需要按照一定的规范编写代码,并将其编译成 DLL 文件。
编译时,需要指定导出函数的修饰符(如 _stdcall、_cdecl等),以及导出函数的声明。
这些步骤可以在开发环境(如Visual Studio)中完成。
2.加载动态链接库在程序运行时,需要加载 DLL 文件。
我们可以通过调用LoadLibrary 函数来加载 DLL,该函数返回一个句柄,表示 DLL 的实例。
加载 DLL 文件后,我们可以通过该句柄获取 DLL 中导出函数的地址。
3.调用动态链接库在获取到DLL中导出函数的地址后,我们可以通过函数指针来调用DLL中的函数。
通过函数指针,程序可以跳转到DLL中执行指定的函数,从而完成相应的功能。
三、制作动态链接库下面以C++语言为例,简单介绍如何制作一个动态链接库。
1.创建DLL工程在 Visual Studio 中创建一个 DLL 项目,选择 DLL(动态链接库)作为项目类型。
在项目中添加需要导出的函数,并在头文件中进行声明。
2.编写导出函数在 DLL 项目中编写需要导出的函数,并在函数前添加修饰符(如_stdcall、_cdecl等)。
FORTRAN静态库、动态库的生成、维护与调用闫昊明2006-9-10一、FORTRAN静态库的生成与维护FORTRAN 静态库是经过编译的代码块,它与主程序相对独立,可以被主程序调用,是FORTRAN工程类型之一. 静态库包含一系列子程序,但不包括主程序. 静态库一般具有LIB扩展名并包含目标代码,且静态库存放在它们特定的目录中. FORTRAN静态库在组织大型程序和在不同程序之间共享子程序等方面具有较大的优点,其重要性不言而喻. 当将静态库与主程序联系起来时,在主程序中调用静态库中的任何子程序将编译到相应的可执行程序. 应用静态库的时候,只有所需要的子程序才在编译过程中插入到可执行文件(.EXE),这意味着这种可执行文件将比包含所有的子程序所生成的可执行文件小. 而且,不必担心哪些子程序是需要的,哪些是不需要的,编译器将替你做出选择. 同时,当更改静态库中的子程序时,相应的应用程序可以不做任何改变,而只需要对其进行重新的编译链接,即可获得新的结果,这无疑也是方便的.目前,常用的FORTRAN静态库有很多种,WINDOWS操作系统下的Compaq Visual FORTRAN version 6.5(简称CVF65)自带的数学统计库IMSL就是一个非常全面的静态库,可以用来解决线性代数和统计学上的很多经典问题. 此外,在NCAR互联网站有很多有用的FORTRAN子程序(网址:/softlib/mathlib.html),其中包括地球物理科学问题、离散和快速Fourier变换、可分离的椭圆微分方程、插值、Legendre多项式、普通数学问题、本征值问题求解、线性方程求解、非线性方程求解、常微分方程求解、特殊函数、统计学等常用子程序集等. 这些FORTRAN子程序可以解决很多基础性的问题,因此有很高的利用价值.在WINDOWS操作系统下,可以用两个命令分别生成静态库. 一个是用‘nmake’命令,它一般用来编译原来应用在UNIX环境下的FORTRAN子程序集,在编译过程中要读取makefile文件中的编译命令,类似于在UNIX下安装软件. 另一个是用‘lib’命令,它可以在WINDOWS环境下编译任何需要集成为静态库的子程序集.编译静态库在DOS命令行环境下比较方便,以后的命令行都指在此环境下运行. 在编译静态库前,首先要安装CVF65,其次要完成要编译的FORTRAN子程序(*.f90). 对于FORTRAN子程序,最好用FORTRAN90的标准来完成,应该放弃FORTRAN77标准。
在 Visual Studio 中使用 Fortran 和 MPI(Message Passing Interface)进行并行编程,可以通过以下步骤:1. 安装 Visual Studio:首先,确保已安装 Visual Studio。
您可以从 Microsoft 官方网站上下载适用于 Fortran 开发的 Visual Studio 版本。
2. 安装 Intel Fortran Compiler:如果您计划使用 Intel Fortran 编译器进行开发,需要安装 Intel Parallel Studio XE,其中包含了 Intel Fortran Compiler。
3. 创建 Fortran 项目:在 Visual Studio 中,选择 "创建新项目",然后选择 "Fortran" 类型的项目。
4. 配置项目属性:在项目属性中,设置编译器选项和链接器选项,以及其他项目设置。
例如,设置编译器为 Intel Fortran Compiler。
5. 编写 Fortran 代码:编写您的 Fortran 代码,可以使用 Fortran 90/95/2003/2008 的语法。
6. 添加 MPI 支持:在 Fortran 代码中,使用 MPI 库函数进行并行编程。
您需要添加MPI 头文件和库文件的路径,以便编译和链接 MPI 相关代码。
MPI 头文件通常位于MPI 安装目录的 include 文件夹下,而库文件则位于 lib(Windows)或 lib64(Linux)文件夹下。
7. 构建和运行:构建项目并运行生成的可执行文件。
在运行 MPI 程序时,您可能需要在启动命令中指定使用的进程数(例如,mpiexec -n 4)。
这些步骤提供了一个基本的框架,让您可以在 Visual Studio 中进行 Fortran 和 MPI 的并行编程。
根据您的具体需求和环境,可能还需要进行一些其他的配置和设置。
动态链接库的创建与使用动态链接库(Dynamic Link Library,DLL)是一种用于在Windows 操作系统中组织、存储和分发可执行代码和数据的文件格式。
DLL文件包含一组函数、变量和资源,可以与其他程序共享,以便提高应用程序的开发效率和运行速度。
1.创建DLL项目:首先,在开发环境中创建一个DLL项目。
可以使用开发工具如Visual Studio等来创建。
选择DLL项目后,在项目中添加需要的函数、变量和资源。
2.导出函数和变量:在DLL项目中,需要明确指定哪些函数和变量可以被外部程序调用。
可以通过将函数和变量声明为`__declspec(dllexport)`来实现。
这样,外部程序在调用时可以访问到这些函数和变量。
示例代码如下:```cpp__declspec(dllexport) int add(int a, int b)return a + b;}```3.编译DLL项目:在完成函数和变量的导出后,编译DLL项目生成DLL文件。
编译过程会把函数和变量编译成二进制代码,并生成DLL文件。
4.调用DLL:在外部程序中调用DLL中的函数和变量时,首先需要加载DLL文件,并获取对应的函数或变量的地址。
然后,可以使用加载的函数或变量来执行相应的操作。
示例代码如下:```cpp#include <windows.h>#include <iostream>using namespace std;typedef int (*AddFunc)(int, int);int mainHMODULE dllHandle = LoadLibrary("mydll.dll");if (dllHandle == NULL)cout << "Failed to load DLL." << endl;return 1;}AddFunc addFunc = (AddFunc)GetProcAddress(dllHandle, "add");if (addFunc == NULL)cout << "Failed to get address of function." << endl;FreeLibrary(dllHandle);return 1;}int result = addFunc(1, 2);cout << "Result: " << result << endl;FreeLibrary(dllHandle);return 0;}```在上述代码中,通过`LoadLibrary`函数加载DLL文件,并使用`GetProcAddress`函数获取函数地址,在调用函数时可以直接使用获取到的函数地址来执行相应的操作。
利用FORTRAN建立动态链接库的步骤如下
利用FORTRAN建立动态链接库的步骤如下:
1,在fortran开发环境下新建一个工程,其类型为Dynamic link libiary,,并且命名工程,编写源程序,命名,插入工程或将一个只含有函数或者子程序的fortran程序加入到project 中,编译通过即可生成DLL。
在此必须对调用的函数或子程序加以声明,以标识这些函数或子程序在所生成的DLL中是可用的。
具体语法如下:
Subroutine sub name
! MS $ ATTRTBUTES DLLEXPORT :: sub name
$ A TTRTBUTES用于声明微软扩展属性。
DLLEXPORT是上述属性之一,它的作用就是声明该函数或子程序能被其他程序或DLL调用,sub name为函数或子程序名。
2,VB调用FORTRAN DLL
用上面的程序建立动态链接库后就可以用VB调用它,在调用前,首先对被调用的DLL 模板在模块级别中进行声明,VB程序声明如下:【Public ︳private】declare sub name lib “libname ”【alias “aliasname”】【(【arglist】)】.
声明之后在VB中使用call 语句实现调用DLL中的函数或子程序。
调用语句如下:Call sub name (arglist)。
操作系统实验一_动态链接库的建立与调用动态链接库(Dynamic Link Library,简称DLL),是一种可执行文件格式,可以包含一些可被其他程序共享和调用的代码、数据和资源。
与静态链接库相比,动态链接库在系统运行时被加载,可以实现动态更新和共享代码的功能。
在操作系统实验一中,我们将学习如何建立和调用动态链接库。
动态链接库的建立通常包括以下步骤:1.编写库文件的源代码:首先,需要编写动态链接库所包含的代码。
这些代码可以是函数、类、变量等程序模块的实现。
在编写代码时,需要注意代码的可重用性和可扩展性,以便其他程序可以调用和使用这些代码。
2.编译源代码生成库文件:将源代码编译成目标文件,并链接生成动态链接库文件。
在编译和链接过程中,需要根据编译器和操作系统的要求设置编译选项和链接选项,例如指定动态链接库的输出格式和名称等。
3.导出函数和符号:在编写代码时,需要使用适当的方式声明和定义函数、类、变量等实体,以便其他程序可以调用和使用它们。
在编译和链接过程中,需要使用一些特殊的关键字或指令来指定导出的函数和符号。
4.生成库文件:使用编译器和链接器将目标文件生成动态链接库文件,并进行必要的优化和处理。
生成的库文件通常包含一些元数据信息,例如导出函数和符号的位置和名称等。
动态链接库的调用通常包括以下步骤:1.导入库文件的头文件:在调用动态链接库的程序中,需要包含动态链接库的头文件。
该头文件包含了库文件中导出函数和符号的声明和定义。
2.加载动态链接库:在程序启动时,需要使用操作系统提供的加载动态链接库的函数来加载动态链接库文件。
加载动态链接库时,需要提供动态链接库的文件路径或其他标识符。
3.获取导出函数的地址:在加载动态链接库后,可以使用操作系统提供的函数来查询和获取动态链接库中导出函数和符号的地址。
获取导出函数的地址后,可以通过函数指针来调用动态链接库中的函数。
4.调用动态链接库函数:通过获取到的函数指针,可以直接调用动态链接库中的函数。
动态链接库和静态库的创建及使用教程第一部分静态库(以vs2005为例)一、创建新的静态库项目1.从“文件”菜单中,选择“新建”,然后选择“项目…”。
2.从“项目类型”窗格中,选择“Visual C++”下的“Win32”。
3.从“模板”窗格中,选择“Win32 控制台应用程序”。
4.为项目选择一个名称,如“MathFuncsLib”,并将其输入“名称”字段。
为解决方案选择一个名称,如“StaticLibrary”,并将其输入“解决方案名称”字段。
5.按“确定”启动Win32 应用程序向导。
在“Win32 应用程序向导”对话框的“概述”页中,按“下一步”。
6.从“Win32 应用程序向导”的“应用程序设置”页中,选择“应用程序类型”下的“静态库”。
7.从“Win32 应用程序向导”的“应用程序设置”页中,取消选择“附加选项”下的“预编译头”。
8.按“完成”创建项目。
向静态库添加类1.若要为新类创建头文件,请从“项目”菜单中选择“添加新项…”。
将显示“添加新项”对话框。
从“类别”窗格中,选择“Visual C++”下的“代码”。
从“模板”窗格中选择“头文件(.h)”。
为头文件选择一个名称,如“MathFuncsLib.h”,并按“添加”。
将显示一个空白文件。
2.添加一个名为“MyMathFuncs”的简单类,以执行常见的算术运算,如加、减、乘和除。
代码应与以下内容类似:// MathFuncsLib.hnamespace MathFuncs{class MyMathFuncs{public:// Returns a + bstatic double Add(double a, double b);// Returns a - bstatic double Subtract(double a, double b);// Returns a * bstatic double Multiply(double a, double b);// Returns a / b// Throws DivideByZeroException if b is 0static double Divide(double a, double b);};}3.若要为新类创建源文件,请从“项目”菜单中选择“添加新项…”。
FORTRAN静态库动态库的生成FORTRAN静态库、动态库的生成、维护与调用闫昊明2006-9-10一、FORTRAN静态库的生成与维护FORTRAN 静态库是经过编译的代码块,它与主程序相对独立,可以被主程序调用,是FORTRAN工程类型之一. 静态库包含一系列子程序,但不包括主程序. 静态库一般具有LIB扩展名并包含目标代码,且静态库存放在它们特定的目录中. FORTRAN静态库在组织大型程序和在不同程序之间共享子程序等方面具有较大的优点,其重要性不言而喻. 当将静态库与主程序联系起来时,在主程序中调用静态库中的任何子程序将编译到相应的可执行程序. 应用静态库的时候,只有所需要的子程序才在编译过程中插入到可执行文件(.EXE),这意味着这种可执行文件将比包含所有的子程序所生成的可执行文件小. 而且,不必担心哪些子程序是需要的,哪些是不需要的,编译器将替你做出选择. 同时,当更改静态库中的子程序时,相应的应用程序可以不做任何改变,而只需要对其进行重新的编译链接,即可获得新的结果,这无疑也是方便的.目前,常用的FORTRAN静态库有很多种,WINDOWS操作系统下的Compaq Visual FORTRAN version 6.5(简称CVF65)自带的数学统计库IMSL就是一个非常全面的静态库,可以用来解决线性代数和统计学上的很多经典问题. 此外,在NCAR互联网站有很多有用的FORTRAN子程序(网址:/doc/167465448.html,/softlib/mathlib.html),其中包括地球物理科学问题、离散和快速Fourier变换、可分离的椭圆微分方程、插值、Legendre多项式、普通数学问题、本征值问题求解、线性方程求解、非线性方程求解、常微分方程求解、特殊函数、统计学等常用子程序集等. 这些FORTRAN子程序可以解决很多基础性的问题,因此有很高的利用价值.在WINDOWS操作系统下,可以用两个命令分别生成静态库. 一个是用‘nmake’命令,它一般用来编译原来应用在UNIX环境下的FORTRAN子程序集,在编译过程中要读取makefile文件中的编译命令,类似于在UNIX下安装软件. 另一个是用‘lib’命令,它可以在WINDOWS环境下编译任何需要集成为静态库的子程序集.编译静态库在DOS命令行环境下比较方便,以后的命令行都指在此环境下运行. 在编译静态库前,首先要安装CVF65,其次要完成要编译的FORTRAN子程序(*.f90). 对于FORTRAN子程序,最好用FORTRAN90的标准来完成,应该放弃FORTRAN77标准。
Aspen plus fortran子程序的编译、连接与运行Aspen Plus 可以用来模拟反应精馏,但提供的动力学方程形式比较死板,很多类型的动力学方程都不能直接输入,不得不外接一个fortran子程序。
本来用到fortran的机会就不多,所以会的人也不多。
何况编写好fortran子程序后,还要用fortran编译器来编译生成obj文件,而且每次运行的时候都得连接一次,比较麻烦。
我的电脑以前是装了编译器这些软件的,但最近出了问题,只能编译fortran子程序,运行aspen外接fortran子程序的时候就会出错。
恰好这几天要帮师兄写个fortran子程序,写完后需要调试,但又运行不了,重装呢也没把握,想起网上有兄弟说过可以用asplink命令生成一个dll文件,这样就不用运行aspen的时候每次都连接编译器了。
于是找来资料学习学习,居然成功了,欣喜之余,分享给大家。
第一步当然是编写动力学子程序了(此处省略若干字)第二步编译写好的动力学子程序(以网友soaty的动力学子程序为例)打开Aspen Plus Simulation Engine打开后是这样的接下来改变文件夹路径,转到存放动力学子程序的那个文件夹比如我的文件路径是C:\ProgramData\AspenTech\Aspen Plus V7.1\IPP于是输入cd C:\ProgramData\AspenTech\Aspen Plus V7.1\IPP回车后就转到这个文件夹了,这时候就可以进行编译了:编译命令:aspcomp 输入命令aspcomp RIPPA.f,回车到文件夹一看你会发现已经生成了obj文件了,第二步就完成了第三步:生成obj文件的OPT文件这个很简单,只需要在文件夹里面先新建一个文本文件,然后把名字改为RIPPA_LIST_OBJ,双击打开文本文件,在里面先添加上刚刚生成的obj文件的路径(就是我们第一步提到的那个文件夹路径加上最后生成的RIPPA.obj就可以了最后把txt格式改成opt格式就行了第四步:链接第二步生成的OBJ文件,生成dll文件命令格式:ASPLINK [DLOPT dloptfile] libnameDloptfile是在刚刚生成的OPT文件的文件名,Libname是给要生成的dll文件指定一个文件名于是我们输入asplink [dlopt RIPPA_LIST_OBJ.opt] RIPPA 回车(这里如果输入的命令是ASPLINK libname 就会链接这个文件夹下所有的OBJ文件,如果你的文件夹下刚好有多个OBJ文件,那么一般不能成功生成dll文件)第五步:生成dll文件的opt文件,和第三步类似贴个图好了,大家参考第三步把txt格式改成opt格式,这时所有的编译链接都完成了,我们就可以在没有安装fortran编译器的电脑上运行带fortran的子程序的Aspen Plus文件了首先打开BKP文件后,点击RUN——settings——Engine Files——Linker填入dll文件的OPT文件名RIPPA_LOC_DLL.opt点击确定,这时,不出意外,就可以运行aspen了注意:上面提到的这些文件必须放到一个文件夹里面,如果您下载了我的文件更改了文件夹的目录就需要在那两个OPT文件中更改成您自己的文件夹目录。
IAPWS-IF97水物性计算Fortran90程序基于IAPWS-IF97的水物性计算Fortran90语言程序代码,程序编写为动态链接库(dll)形式,以便于调用。
下面具体讲述。
如上图所示,水与水蒸气可分为5个区,但本程序只适用于4个区,即图中的第1、2、3、4区,不包括第5区。
压力与温度范围为:611.657Pa P 100MPa 273.15K T 1073.15K≤≤≤≤ 程序的输入变量为压力P 与温度T ,单位分别为Pa 与K 。
输出变量(12个)如下: ---------------------------------------------------------------------------------------------------------------- 比容v 内能u 比焓h 比熵s 定压比热容Cp 定容比热容Cv 声速w m^3/kg J/kg J/kg J/kg*K J/kg*KJ/kg*K m/s 定压热膨胀率β 等温压缩率κ 导热系数λ动力粘度μ 表面张力σ 1/K 1/Pa W/m*K Pa*s N/m---------------------------------------------------------------------------------------------------------------- 输出变量是以一个数组的形式存储,例如数组为prop(12),数组与变量的对应顺序为: v u h s Cp Cv wβ κ λ μ σ单位如前所述。
现给出具体的调用方法:给定压力P(Pa)与温度T(K),计算物性,程序自己判断所属区域:call h2o(P,T,prop(12))若想得到给定压力P(Pa)或温度T(K)下的饱和态物性,则可如下调用:a.给定压力call PsatW(P,T)或给定温度call TsatW(P,T)b.饱和液态call h2o(P,1.001*T,prop(12))或饱和汽态call h2o(P,0.999*T,prop(12))当然还有其他方法,读者详细了解程序内容后,请自行发现。
动态库的创建与使用动态库是一种在程序运行时加载的库,它可以使用动态链接来提供共享代码。
在本文中,我们将介绍如何创建和使用动态库。
一、创建动态库动态库可以使用多种编程语言创建,如C、C++、Java等。
下面以C语言为例,介绍如何创建动态库。
1. 创建源文件首先需要编写源文件,可以是一个或多个C文件。
例如,我们创建一个名为“test.c”的文件,其中包含一个名为“test_func”的函数。
```#include <stdio.h>void test_func() {printf('Hello, world!');}```2. 编译生成动态库使用编译器将源文件编译生成动态库。
在Linux下,可以使用gcc命令,如下所示:```gcc -shared -o libtest.so test.c````-shared` 表示生成动态库,`-o` 后面指定生成的库文件名,这里我们命名为“libtest.so”。
3. 添加库文件路径在使用动态库时,需要告诉编译器库文件的路径。
可以使用环境变量LD_LIBRARY_PATH来设置库文件路径,如下所示:```exportLD_LIBRARY_PATH=/path/to/dynamic/library:$LD_LIBRARY_PATH ```其中,“/path/to/dynamic/library”为动态库所在的路径。
二、使用动态库使用动态库需要在程序中包含头文件并链接库文件。
1. 包含头文件在程序中包含动态库的头文件,如下所示:```#include <stdio.h>#include <test.h>```其中,“test.h”是头文件名,包含了动态库中的函数声明。
2. 链接库文件在编译程序时需要链接动态库文件,可以使用编译器的-L和-l 选项,如下所示:```gcc -o program program.c -L /path/to/lib -ltest```其中,“program.c”是程序源文件名,“-L”指定库文件所在路径,“-ltest”指定链接“libtest.so”库文件。
用FORTRAN创建VB的动态链接库
梁勇
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】1999(000)003
【摘要】一、引言 FORTRAN是一种适用于数值计算的语言,在科学计算和工程分析领域,该语言效率最高。
不足之处是图形功能弱,且多被限制在DOS环境下运行。
而VB作为基于Windows平台的开发工具,以其灵活简便、易学易用的可视化集成开发环境、面向对象的编程方法,使Windows编程变得轻松高效,从而成为普通程
序员普遍采用的编程语言。
VB的缺陷是计算能力差、执行速度慢。
若能在软件开发过程中,把两者结合起来,在Windows环境下进行混合编程。
【总页数】4页(P15-17,72)
【作者】梁勇
【作者单位】贵航集团飞机设计所总体室
【正文语种】中文
【中图分类】TP311
【相关文献】
1.FORTRAN生成的动态链接库与VB接口技术研究 [J], 尚涛;牛连强;唐任远
2.通过动态链接库实现VB和Fortran的混合编程 [J], 王文轲;黄卡玛;陈倩;郭忠海
3.在VB另创建简化调用外部程序的动态链接库 [J], 朱从旭
4.串行通讯C动态链接库的创建及其在VB中的应用 [J], 郑伟峰;林显忠
5.通过动态链接库实现VB和Fortran的混合编程 [J], 王文轲;陈倩;郭忠海;黄卡玛
因版权原因,仅展示原文概要,查看原文内容请购买。
C#与Fortran混合编程-本地调用Fortran动态链接库Fortran是一门古老的语言,它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。
FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。
然而Fortran程序本身不适合开发独立的应用程序,例如我们传统的桌面应用或者Web应用。
因此这里我们便想将C#与Fortran 结合,C#借助Fortran可以实现精度更高,计算更快的程序,而Fortran通过C#,便也能够达到可视化设计。
一、基本思路运用Fortran,编写动态链接库(DLL),在DLL中提供计算的函数接口,然后在C#中调用该DLL中计算部分的函数,实现计算过程。
这里需要注意的是,由于我们使用的是Fortran编译器,生成的DLL属于第三方非托管DLL,因此无法直接在程序中添加DLL的引用。
具体的做法将在后续部分说明。
二、编写Fortran程序,生成动态链接库文件知道思路之后便开始正式的Coding。
首先新建一个空的Fortran Dynamic-link Library项目。
在Intel(R) Visual Fortran点击Library,选中右图的Dynamic-link Library.然后点击OK.这时的项目如下所示:点击Sources File文件夹,选择新建项。
添加一个新的Fortran文件然后便开始Fortran代码的编写工作。
这里我们主要实现两个方法:一个方法是求两个数相加之和,并返回结果。
另一个是输入一个数组,对这个数组进行排序,并找出最大值,最后返回排序后的结果,并返回最大值。
这里我们分别演示的是Fortran传出一个数和一个数组有何不同。
关于Fortran的基本语法不是本文的讨论范畴,请读者自行查阅资料。
下面给出的上述我们要实现的功能的具体Fortran代码:DOUBLE PRECISION FUNCTION ADD(A,B)!DEC$ ATTRIBUTES DLLEXPORT::ADD!DEC$ ATTRIBUTES STDCALL,ALIAS:'Add'::ADDDOUBLE PRECISION:: A,BADD=A+BENDFUNCTION SORTANDFINDMAX(ARRAY,LENGTH)!DEC$ ATTRIBUTES DLLEXPORT::SORTANDFINDMAX!DEC$ ATTRIBUTES STDCALL,ALIAS:'Sortandfindmax'::SORTANDFINDMAX DOUBLE PRECISION ::ARRAY(LENGTH)INTEGER::I,JDOUBLE PRECISION::SORTANDFINDMAX,TEMPSORTANDFINDMAX=ARRAY(1)DO I=1,LENGTH-1DO J=I+1,LENGTHIF(ARRAY(I).GT.ARRAY(J)) THENTEMP=ARRAY(I)ARRAY(I)=ARRAY(J)ARRAY(J)=TEMPSORTANDFINDMAX=ARRAY(J)END IFEND DOEND DOEND上面我们声明了两个Fortran函数,一个是计算两个数相加,一个是选择排序并找出最大值。
FORTRAN95程序设计实验指导第一节 Compaq Visual FORTRAN 6.5快速入门1.1 安装Compaq Visual FORTRAN 6.51.1.1 系统要求安装Compaq Visual FORTRAN 6.5(以下简称为CVF)需要具备以下软硬件条件:●80586或以上处理器,运行Windows 98//NT/2000或以上操作系统。
●具有光盘驱动器。
●64MB或以上内存。
●足够的硬盘空间。
安装程序根据安装选项提示所需的硬盘空间。
专业版的典型安装需要约300MB硬盘空间。
●SVGA显示器。
●鼠标。
1.1.2 安装步骤下面以Windows 2000操作系统为例,对于其他Windows 操作系统,安装过程与此类似。
首先,将含CVF的光盘插入光盘驱动器,在资源管理器中运行Setup程序,屏幕显示Compaq VisualFORTRAN Setup窗口;单击【istall Visual Fortran】按钮;当出现询问是否查看README.TXT文件的对话框时单击【否】按钮;安装程序自动搜索已有组件,单击【Continue】(继续)按钮,并按提示输入用户名、公司名、产品系列号后,安装程序会显示安装选项对话框(图1.1);如果要改变安装CVF 的文件夹,单击【Change Folder...】(改变文件夹)按钮,选择或输入所需的文件夹名;如果输入的文件夹不存在,安装程序会自动生成该文件夹,并生成几个下级文件夹以存放相应的各类文件。
图1.1还显示了各安装选项的简短说明和安装时所需的硬盘空间。
选择下列四个安装选项之一继续安装:Typical(典型)Custom(定制)Run from CD-ROM(从光盘运行)Typical(典型)安装选项将安装最常用的部分,约需298MB硬盘空间。
Custom(定制)安装选项将允许用户选择安装自己需要的组件(约需350MB空间)。
Run From CD-ROM(从光盘运行)安装选项约需29MB硬盘空间。
第一步点custommodeling第二步选择custommodeling下的procedures第三步双级addprocedurename一个procedure(重要Name一定要是程序名字这个可以从下面一步的模板里知道)第四部从libraryadsimprocedure下选择你要参考的模板,第五步右键edit你选择的模板把全部内容复制paste进刚才named的procedure里面(要完全覆盖就是要按照模板和fortran的格式要求),保存退出后右键compile。
直到变成,然后右键点generatecode。
已经确认没问题的fortran可以点execute,直接生成dll文件。
如果没有问题反馈(可能会提示编译不成功神马的,看下一步。
如果fortran有问题,不会看到编译过程,只会显示编译不成功。
第六步(这一步只是为了看到编译的过程从而修改程序。
如果修改好了从第五步生成dll)如果出问题了不要点选execute。
在目标文件夹下可以见到MakeUserCode文件。
将包含nmake.exe 、ifort.exe和RC.Exe的C:\Program Files (x86)\Intel\Compiler\11.1\065\bin\ia32C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin下的所有文件拷贝到目标文件下。
然后在目标文件夹的空白处按shift+右键,出现选择在此处打开命令窗口,会跳出dos命令只要输入nmake –fMakeUserCode按下enter就可以出现编译过程(方便修改程序)。
如果程序内容没问题了,一般只是显示少了编译组件什么的,恭喜,你的程序没问题了,此时请回到第五步,重新点选execute,点OK就可以生成dll了。
Fortran语言使用f90SQL连接各数据库方法1、首先配置开发环境,我使用的vs2013.2_ult_chs加poser.XE.2013-SP1。
2、配置f90SQL(1)打开VS2013-工具-选项-Intel ComPoser XE-Visual Fortran-Compilers其中分别将f90SQL的Include和lib文件夹的完整地址粘贴到Include和Libraries中,如下图。
(2)将f90SQL\Redist文件夹下的两个DLL文件拷贝到Windows或System或者System32或与可执行程序在同一目录下。
3、创建工程,添加f90SQL\Include文件夹下的F90SQL.mod、F90SQLconstants.mod和F90SQLstructures.mod三个文件,里面包含了和f90SQL有关的大部分子程序和变量,再添加f90SQL\Lib文件夹下的f90SQL.lib文件,这个文件里面包含了很多已经封装好的子程序供用户调用。
4、配置ODBC(DSN)连接打开控制面板-管理工具-ODBC数据源,点击添加即可添加需要的数据源连接,在程序中使用f90SQLConnect 时,使用设置好的数据源的数据源名即可成功连接数据库,下面距离access数据库和oracle数据库的连接设置。
Access数据库连接设置1)打开ODBC数据源,如果找不到可以在C:\Windows\SysWOW64文件夹中找到odbcad32.exe打开,点击添加,如下图。
2)选择想要安装数据源的驱动程序,由于是普通的access数据库,我选择图中这种格式,点击完成。
3)在数据源名上输入外部调用时的名称,再点击选择,选择我们需要连接的数据库文件,见下图。
4)点击高级,可以设置在用ODBC连接这个数据源时需要的用户名和密码,如下图。
Oracle数据库连接设置第一步和连接access数据库是一样的。
利用FORTRAN建立动态链接库的步骤如下:
1,在fortran开发环境下新建一个工程,其类型为Dynamic link libiary,,并且命名工程,编写源程序,命名,插入工程或将一个只含有函数或者子程序的fortran程序加入到project 中,编译通过即可生成DLL。
在此必须对调用的函数或子程序加以声明,以标识这些函数或子程序在所生成的DLL中是可用的。
具体语法如下:
Subroutine sub name
! MS $ ATTRTBUTES DLLEXPORT :: sub name
$ A TTRTBUTES用于声明微软扩展属性。
DLLEXPORT是上述属性之一,它的作用就是声明该函数或子程序能被其他程序或DLL调用,sub name为函数或子程序名。
2,VB调用FORTRAN DLL
用上面的程序建立动态链接库后就可以用VB调用它,在调用前,首先对被调用的DLL 模板在模块级别中进行声明,VB程序声明如下:
【Public ︳private】declare sub name lib “libname ”【alias “aliasname”】【(【arglist】)】.
声明之后在VB中使用call 语句实现调用DLL中的函数或子程序。
调用语句如下:Call sub name (arglist)。