fortran语言调用fortran写的dll
环境: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的更多相关文章
- 易语言调用C++写的DLL
直接调用会弹出堆栈错误的信息,原因是VS默认是__cdcel方式,而易语言是__stdcall,所以调用约定不一致导致堆栈错误. 解决方案很简单,易语言声明DLL函数时“在库中对应命令名”函数名前加一 ...
- 易语言调用csharp写的COM组件的程序在Win2008上奔溃的解决办法
易语言调用csharp写的COM组件,除了要注册csharp写的dll之外(由于是.net代码,需要用.net自带的注册工具RegAsm.exe注册,具体注册方法为: C:\WINDOWS\Micro ...
- 【转载】java调用C++写的DLL
用java调用C++写的DLL一直以来都是一个比较麻烦但又很常见的问题. 我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦的. 如果有一个现有的 .dll/.so 文件,如 ...
- c++ c# java 调用 c++ 写的dll
1. vs 中新建win32 dll 项目 testdll 添加实现文件 test.cpp #include "stdafx.h" #include <ios ...
- c++调用c#写的DLL
c++调用c#写的DLL: 此文章演示了建立c#的dll: c++建立工程,引入dll: 不能解决的问题: 指定dll的路径,在代码里面直接写 #using "xxx.dll" 必 ...
- QT调用C#写的Dll
参见: https://blog.csdn.net/weixin_42420155/article/details/81060945 C#写的dll是没有dllMain入口函数的,是一种中间语言,需要 ...
- Delphi7程序调用C#写的DLL解决办法(转)
近来,因工作需要,必须解决Delphi7写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行: 编写C#dll的方法都一样,首先在vs2005中创建一个 ...
- 发现个delphi调用vc写的Dll中包括pchar參数报错奇怪现象
发现个delphi调用vc写的Dll中包括pchar參数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会执行报错,在之前随意加上条语句就不报错了奇怪! vc的DLL源代码地址 ...
- Delphi7程序调用C#写的DLL解决办法
近来,因工作需要,必须解决Delphi7写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行: 编写C#dll的方法都一样,首先在vs2005中创建一 ...
随机推荐
- python1.返回一个字符串中出现次数第二多的单词 2.字符串中可能有英文单词、标点、空格 3.字符串中的英文字符全部是小写
import re from collections import Counter def second_count_word(s): # # 利用正则按标点和空格切割,有其他标点可以添加到[]内 # ...
- Loadrunner进行HTTPS协议性能测试
1.最简单办法就是在脚本前面加上:web_set_sockets_option("SSL_VERSION","TLS"),一般能解决HTTPS协议的请求问题,无 ...
- CancellationTokenSource 和 CancellationToken 取消线程
Main 程序[分别调用三个方法] static void Main(string[] args) { using (CancellationTokenSource cts = new Cancell ...
- 使用IDEA工具编写Python自动化脚本遇到的小问题
1.无法编写代码:因为安装了IdeaVim,所以需要按i进入编辑模式才能输入 2.位于同一目录下的py文件,其中一个文件需要引入另一个文件from 模块名 import * 无法找到模块名:点击这两个 ...
- Unity2018.3全新Prefab预制件系统深入介绍视频教程+PPT+Demo源码
Unity在2018.3推出了重新设计的Prefab预制件系统.这一全新的设计终于为一个长达十年的问题画上了完美的句号, 这个问题就是:“什么时候Unity可以提供嵌套式的预制件系统,俗称Nested ...
- 从零开始学spring cloud(四) -------- 基础项目搭建
1.创建一个spring cloud项目 1.1.使用工具创建--idea 点击creat new project,选择spring initializr 点击next,选择下一步 填入自己的Grou ...
- springmvc接收ajax传递的数组
之前的方法我用字符串拼接.req.getParameter("参数名[]");或json方式.虽然都能用,但是都不太令我满意. 今天参考这个贴子,ajax添加 traditiona ...
- 控制请求重复提交的方法总结(Token)
重复提交的定义: 重复提交指的是同一个请求(请求地址和请求参数都相同)在很短的时间内多次提交至服务器,从而对服务器造成不必要的资源浪费,甚至在代码不健壮的情况还会导致程序出错. 重复提交的原因或触发事 ...
- C# DataTable抽取Distinct数据(不重复数据)[z]
DataTable dataTable; DataView dataView = dataTable.DefaultView; DataTable dataTableDisti ...
- 通过url获取bitmap
//通过Uri获取BitMap public static Bitmap getBitmapFromUri(Uri uri,Context context) { Bitmap bitmap = nul ...