环境:vs2013+IVF 2011

有时候想把fortran写的常用的函数编译为DLL,以供不同的fortran exe调用,这时候应该怎样做呢?【参考 彭国伦老师 fortran95 程序设计 书349和353页】

下面以写一个计算圆面积的dll来示例:

首先新建一个解决方案(solution),然后添加一个工程(project),一个解决方案下可以有多个工程,每个工程可以认为是一个大的功能区,每个都可以是一个完善的可执行软件exe。

新建一个  fortran dynamic library类型的工程 sub:

 subroutine SUB(S,R)
!程序作用是根据传入的圆的半径R,计算圆的面积S
!DEC$ ATTRIBUTES DLLEXPORT :: SUB
!上面的语句是编译功能语句,DLL中可以被外界调用的函数都要写上面的语句,声明哪些函数可以被外界访问,不然外界无法访问。
implicit none
double precision S,R
write(*,*)"You are use subroutline in DLL"
S=3.141592653*R**!计算的面积可以通过传址传出去
return
end

此时可以 点击 生成---生成解决方案,会生成sub.lib 和 sub.dll

然后可以在同一个解决方案下新建另外一个 可执行文件类型的 工程 mainCallDll:

 program callDll_SUB
implicit none
double precision area,r
r=2.0
call sub(area,r)
write(*,*)"r=",r,"area=",area
pause
stop
end

最后在mainCallDll工程上右键,设为启动项,然后再右键本工程,添加,选择sub工程中的sub.lib,此时可以点 击 生成---生成解决方案。

但此时是不可以运行的,要把sub.dll复制到与 mainCallDll.exe同目录下才行。

代码组织结构:

------


接下来调试dll:【参考:https://blog.csdn.net/caoshangpa/article/details/78733379   https://blog.csdn.net/qianghaohao/article/details/50190905

0. 将exe拷贝到dll生成目录下,并设置dll工程为启动项目。然后:

1.

2.

3.

4.

fortran语言调用fortran写的dll的更多相关文章

  1. 易语言调用C++写的DLL

    直接调用会弹出堆栈错误的信息,原因是VS默认是__cdcel方式,而易语言是__stdcall,所以调用约定不一致导致堆栈错误. 解决方案很简单,易语言声明DLL函数时“在库中对应命令名”函数名前加一 ...

  2. 易语言调用csharp写的COM组件的程序在Win2008上奔溃的解决办法

    易语言调用csharp写的COM组件,除了要注册csharp写的dll之外(由于是.net代码,需要用.net自带的注册工具RegAsm.exe注册,具体注册方法为: C:\WINDOWS\Micro ...

  3. 【转载】java调用C++写的DLL

    用java调用C++写的DLL一直以来都是一个比较麻烦但又很常见的问题. 我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦的. 如果有一个现有的 .dll/.so 文件,如 ...

  4. c++ c# java 调用 c++ 写的dll

    1. vs 中新建win32 dll 项目   testdll 添加实现文件       test.cpp #include "stdafx.h" #include <ios ...

  5. c++调用c#写的DLL

    c++调用c#写的DLL: 此文章演示了建立c#的dll: c++建立工程,引入dll: 不能解决的问题: 指定dll的路径,在代码里面直接写 #using "xxx.dll" 必 ...

  6. QT调用C#写的Dll

    参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数的,是一种中间语言,需要 ...

  7. Delphi7程序调用C#写的DLL解决办法(转)

    近来,因工作需要,必须解决Delphi7写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行:    编写C#dll的方法都一样,首先在vs2005中创建一个 ...

  8. 发现个delphi调用vc写的Dll中包括pchar參数报错奇怪现象

    发现个delphi调用vc写的Dll中包括pchar參数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会执行报错,在之前随意加上条语句就不报错了奇怪! vc的DLL源代码地址 ...

  9. Delphi7程序调用C#写的DLL解决办法

     近来,因工作需要,必须解决Delphi7写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行:    编写C#dll的方法都一样,首先在vs2005中创建一 ...

随机推荐

  1. Oracle使用学习笔记(二)_Sql语句

    一.Sql语句的分类 数据操作语言,简称DML(data manipulation language),如增加,删除,修改,查询数据等 数据定义语言,简称DDL(data defination lan ...

  2. python学习Day12 函数的默认值、三元表达式、函数对象(函数名)的应用场景、名称空间与作用域

    复习 1.字符串的比较: -- 按照从左往右比较每一个字符,通过字符对应的ascii进行比较 2. 函数的参数 : 1)实参与形参:       -- 形参:在函数定义时()中出现的参数       ...

  3. superset在 centos 7安装运行

    参考:1.http://blog.csdn.net/u014729236/article/details/76302888?locationNum=2&fps=1 2.https://www. ...

  4. Python设计模式 - UML - 时序图(Sequence Diagram)

    简介 时序图表示参与者与对象之间.对象与对象之间的动态交互过程及时序关系. 时序图详细而直观地展示了对象随时间变化的状态.调用关系和消息时序,时序图中的主要元素有:参与者(Actor), 对象(Obj ...

  5. Ubuntu16.04 修改主机名,以及解析主机名

    第一步:修改主机名: vim  /etc/hostname 第二步:修改网络解析名称: vim /etc/hosts 第三步:重启网络配置服务(或者刷新dns): sudo /etc/init.d/n ...

  6. 【Spring学习】Spring的源码解析之路

    缘起:=====>>>> 在项目中实际上是用到了Spring的内容,只是直接用的SpringBoot,不管是Eclipse中还是在Intellig IDEA中,应该都比较容易能 ...

  7. LAB6 SOAP

    有web服务的,需要Deploy一下才能跑 通过ls看所有文件的所在地,cd进入对应文件夹,才可以编译 javac 编译,Java是执行 URL必须是WSDL文件点进去里面的:http://local ...

  8. tp3.2 上传文件及下载文件

    公共方法 UploadFile.class.php() // 开始 , , , ,];];,; ;; ::::::;,) {//文件上传失败 //捕获错误代码$this->error($file ...

  9. Google弃用HttpClient 而推荐使用HttpURLConnection的原因

    因为兼容性问题,谷歌不愿意维护HttpClient,而使用HttpURLConnection HttpURLConnection的API包小而简便,更适合安卓 HttpURLConnection能够提 ...

  10. .NET Core PartialView 与 Ajax

    Ajax的核心是XMLHttpRequest对象(XHR),能够以异步方式从服务器获取新数据.开发主要利用Ajax来执行异步刷新和局部视图更新的功能. 而开发常常在前段页面利用JQuery封装的Aja ...