在科学计算领域,不可避免地要遇到C与Fortran混合编程的问题。迫于项目的需要,我也面临过这个问题,这是我根据当时的学习笔记整理出来的。算是自己的第一篇Blog。以下程序在Visual Fortran 6.5 和Visual C++ 6.0中调试通过。
Visual Fortran与Visual C++ 混合编程
一、 VF的DLL被VC所调用
a) 简单例子
编写f_dll.f程序,编译连接成DLL
SUBROUTINE FDLLSUB(D1, D2)
!DEC$ ATTRIBUTES DLLEXPORT :: fdllsub
INTEGER D1
C REAL*8 D2
DOUBLE PRECISION D2
WRITE(*,*) D1
WRITE(*,*) D2
D1 = D1 + 1
D2 = D2 * 2.0D0
RETURN
END
然后编写C程序,如下:
#include <stdio.h>
__declspec(dllimport)
void _stdcall FDLLSUB(int *a, double *b);
//这里必须是大写!
void main(int argc, char *argv[])
{
int aa=1;
double bb=10.0;
printf("first: %d hhhhh %f8.5/n", aa, bb);