zoukankan      html  css  js  c++  java
  • FORTRAN混合编程笔记

    FORTRAN混合编程笔记

    1、C++调用FORTRAN静态链接库
    • 首先将FORTRAN编译成静态链接库(***.lab)文件;
    • 在VS中创建一个C++工程文件
    • 创建一个f2c.h头文件,主要目的是将FORTRAN的变量类型和C++的变量类型做一个转换
    /* f2c.h  --  Standard Fortran to C header file */
    
    /**  barf  [ba:rf]  2.  "He suggested using FORTRAN, and everybody barfed."
    
    	- From The Shogakukan DICTIONARY OF NEW ENGLISH (Second edition) */
    
    	/* 2008 Feb 18  James M Anderson  --MPIfR  --edit the standard f2c.h header
    										to select just what is needed for basic
    										FORTRAN interaction in C, as the standard
    										f2c.h is incompatible with C++ <vector> */
    
    #ifndef F2C_INCLUDE
    #define F2C_INCLUDE
    
    typedef int integer;
    typedef unsigned int uinteger;
    typedef char *address;
    typedef short int shortint;
    typedef float real;
    typedef double doublereal;
    typedef struct { real r, i; } complex;
    typedef struct { doublereal r, i; } doublecomplex;
    typedef int logical;
    typedef short int shortlogical;
    typedef char logical1;
    typedef char integer1;
    #ifdef INTEGER_STAR_8	/* Adjust for integer*8. */
    typedef long long longint;		/* system-dependent */
    typedef unsigned long long ulongint;	/* system-dependent */
    #endif
    
    /* Extern is for use with -E */
    #ifndef Extern
    #define Extern extern
    #endif
    
    /* procedure parameter types for -A and -C++ */
    
    
    
    #endif /* F2C_INCLUDE */
    
    
    • 在函数声明头文件中开头和结尾使用以下宏定义
    #ifdef __cplusplus
    extern "C" {
    #endif
    	extern 函数返回类型 函数名(函数参数);
        ...
    #ifdef __cplusplus
    }
    #endif
    
    • 在函数定义文件前添加如下宏定义,用于调用静态链接库中的子函数时使用。
    #ifndef FTN_NAME
    #define FTN_NAME(a)                               a
    #endif
    

    如需要调用静态链接库中一个名为iristec的函数时则可以写成FTN_NAME(iristec)();

    • 在进行函数传值的时候一定要注意原FORTRAN程序中变量的类型,如果是指针则要传变量地址进去。
    • 注意函数定义文件的文件后缀必须是.c,否则无法编译成功。
    2、C++编译动态链接库(***.DLL)
    • 函数声明时前面加上__declspec(dllexport)
  • 相关阅读:
    Firefly官方教程之DBentrust使用文档
    《烽烟OL》简介
    《暗黑世界》简介
    CrossApp简介
    内联元素于与块元素的转换 相对定位、绝对定位以及fixed定位 Z轴覆盖
    div介绍 盒子模型边框属性 CSS初始化 文字排版 边框调整 溢出
    CSS样式补充第二天
    CSS样式
    form表单以及内嵌框架标签
    html对a标签的运用以及属性,img图像标签的属性及应用
  • 原文地址:https://www.cnblogs.com/hellovan/p/10776663.html
Copyright © 2011-2022 走看看