intel FORTRAN调用VC++的例子
VC++的动态链接库建立如下
//Mydll.h
_declspec(dllexport) int Maxx(int a, int b);
_declspec(dllexport) int Minn(int a, int b);
//Mydll.cpp
#include"MyDll.h"
int Maxx(int a, int b)
{
if(a>=b)return a;
else
return b;
}
int Minn(int a, int b)
{
if(a>=b)return b;
else
return a;
}
编译成动态链接库Mydll.dll和Mydll.lib。
intel Fortran调用VC++的动态链接库如下:
program main(可要或者不要)
interface
integer function maxx(a,b)
!DEC$ATTRIBUTES DLLIMPORT,STDCALL,ALIAS:'?Maxx@@YAHHH@Z'::maxx
integer a,b
end function maxx
integer function minn(c,d)
!DEC$ATTRIBUTES DLLIMPORT,STDCALL,ALIAS:'?Minn@@YAHHH@Z'::minn
integer c,b
end function minn
end interface
integer aa,bb,cx,cd
aa=12
bb=21
cd=maxx(aa,bb)
cx=minn(aa,bb)
write(*,*)cx,cd
end program
注意:编译时需要把Mdll.lib加入fortran的工程中
VC++的动态链接库建立如下
//Mydll.h
_declspec(dllexport) int Maxx(int a, int b);
_declspec(dllexport) int Minn(int a, int b);
//Mydll.cpp
#include"MyDll.h"
int Maxx(int a, int b)
{
if(a>=b)return a;
else
return b;
}
int Minn(int a, int b)
{
if(a>=b)return b;
else
return a;
}
编译成动态链接库Mydll.dll和Mydll.lib。
intel Fortran调用VC++的动态链接库如下:
program main(可要或者不要)
interface
integer function maxx(a,b)
!DEC$ATTRIBUTES DLLIMPORT,STDCALL,ALIAS:'?Maxx@@YAHHH@Z'::maxx
integer a,b
end function maxx
integer function minn(c,d)
!DEC$ATTRIBUTES DLLIMPORT,STDCALL,ALIAS:'?Minn@@YAHHH@Z'::minn
integer c,b
end function minn
end interface
integer aa,bb,cx,cd
aa=12
bb=21
cd=maxx(aa,bb)
cx=minn(aa,bb)
write(*,*)cx,cd
end program
注意:编译时需要把Mdll.lib加入fortran的工程中