当前位置: 代码迷 >> 其他开发语言 >> Fortran调用vc的动态库,该如何处理
  详细解决方案

Fortran调用vc的动态库,该如何处理

热度:6128   发布时间:2013-02-26 00:00:00.0
Fortran调用vc的动态库
大家好,有个问题请教下。我有一个工程,用VC2005编译成了动态库,里面有三个API,其中一个的内部用到了STL的东西,但是函数接口仍是普通数据。另两个做例子的函数(简单地比大小,没有用任何STL的东西)的导出方式如下

#pragma once

#ifdef DLL_API
#else
#define DLL_API extern "C" _declspec(dllimport)
#endif

DLL_API int _MAXX(int a, int b);
DLL_API int _MINN(int a, int b);

我用其他软件看了DLL中的函数名,是对的,而且这个动态库经过测试是正确的。FORTRAN 代码如下

program main
interface
integer function MAXX(a,b)
!DEC$ATTRIBUTES DLLIMPORT,STDCALL,ALIAS:'?MAXX'::MAXX
integer a,b
end function MAXX
integer function MINN(c,d)
!DEC$ATTRIBUTES DLLIMPORT,STDCALL,ALIAS:'?MINN'::MINN
integer c,d
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

我也已经把LIB的路径加到FORTRAN工程里面去了,但是链接的时候出错。

Linking...
main.obj : error LNK2001: unresolved external symbol _MINN@8
main.obj : error LNK2001: unresolved external symbol _MAXX@8
main.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
main.exe - 3 error(s), 0 warning(s)

请大家帮忙。谢谢!



------解决方案--------------------------------------------------------
除了dll文件和路径,还要检查编译器设置和选项。