2017-03-09 63 views
0

我想将Fortran代码与Fortran制作的DLL链接起来。如何链接Fortran exe与Fortran DLL?

简单的方式...

我想使程序

Fortran程序(编辑代码) - 友情链接的Fortran DLL(不可编辑)(通过Fortran程序代码??联法)我不想显示我的代码(这部分将以DLL形式)。

例如:

我在英特尔Fortran的DLL中的代码是

SUBROUTINE TWICE(x,y) 
IMPLICIT NONE 
!DEC$ ATTRIBUTES DLLEXPORT::TWICE 
REAL, INTENT(IN) :: x 
REAL, INTENT(OUT) :: y 
y=2*x 
END SUBROUTINE TWICE 

现在我想在另一个程序使用此DLL。 新程序是单独的程序,我想在下面编写的英特尔Fortran 中使用此DLL。


PROGRAM TestToCallDLL 
IMPLICIT NONE 
!DEC$ ATTRIBUTES DLLIMPORT::TWICE 
REAL :: x,y 

WRITE(*,*)'x?' 
READ(*,*)x 
CALL Twice(x,y) 
WRITE(*,*)'x twice = ',y 

END PROGRAM TestToCallDLL 

错误是:

Error 1 error LNK2019: unresolved external symbol __imp__TWICE referenced in function _MAIN__ twiceTEST.obj 
Error 2 fatal error LNK1120: 1 unresolved externals Debug\twiceTEST.exe 
+1

请不要要求别人给你发送任何东西,这是完全脱离主题。要求解决您的问题。通过简单的步骤和细节向我们展示您的工作。显示你的错误信息。显示一些简单的代码。 –

+0

点击**编辑下方的问题http://stackoverflow.com/posts/42696140/edit后输入更多信息我们需要看到**更多**。显示你正在执行的** ifort命令**和错误消息**。 –

+0

当你收到错误信息时,你运行了哪个命令?或者你点击什么?或者当它打印该信息时你在做什么?另请参阅http://stackoverflow.com/questions/5159353/how-can-i-get-rid-of-the-imp-prefix-in-the-linker-in-vc –

回答

0

创建.DLL时由编译器生成的.LIB文件必须在链接期间使用。将其添加为依赖项。您也可以将其复制到新的项目目录中。

请参阅Calling Fortran DLL from C++ using Visual Studio 2008英特尔Fortran for Windows支持论坛获取更多信息。