2

Interfacing VS2019 C++ with Intel Fortran

 2 years ago
source link: https://www.codeproject.com/Questions/5317850/Interfacing-VS2019-Cplusplus-with-Intel-Fortran
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

I cannot access the values inside the Fortran labelled common blocks and I haven't found any example about this problem.
I'm able to call the Fortran routine that I've put inside a module but I cannot access to the Common Block Variables and notwithstanding several attempts I've always got zeros for the variables in common blocks.
I've created two separate projects one for C++ Console and one for Fortran dynamic link library inside a solution, in which the C++ project depends on the Fortran project.

Thank You very much for your answers in advance.


Carlo Timossi

What I have tried:

C++ code:

Expand ▼   Copy Code
#include <iostream>

typedef struct
{
    short int   nstream;
    short int   nunit;
    short int   ncomp;
}  generaltype;

typedef struct 
{
    float tau;
} PItype;

extern "C" {
    generaltype general;
    PItype pi;
}

extern "C" {
    void ADD1(void);
}


int main()
{
    ADD1();
    std::cout << general.ncomp;
    std::cout << general.nunit;
    std::cout << general.ncomp;
    std::cout << pi.tau;
}


Fortran code:
Copy Code
module testfor
    use, intrinsic :: iso_c_binding
    implicit none
contains
    subroutine ADD1() bind(C,name="ADD1")
    !DEC$ ATTRIBUTES DLLEXPORT:: ADD1
    implicit none
    include "Comm.for"
    nstream=5
    nunit=1
    ncomp=3
    tau = 3.14159
    return
    end subroutine
end module testfor


Comm.for code:
Copy Code
REAL tau
     !DEC$ ATTRIBUTES alias:'pi' :: pi
     COMMON /pi/ tau
     INTEGER(2) nstream, nunit, ncomp
     !DEC$ ATTRIBUTES alias:'general' :: general
     COMMON /general/ nstream, nunit, ncomp

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK