如何使用ifort链接包含类的Fortran库

时间:2013-10-16 23:53:33

标签: oop linker fortran intel-fortran fortran2003

我正在尝试确定在链接具有包含类型绑定过程的类的静态库时收到错误的原因。

当我在命令行上编译和链接时:

这可行(并且生成的可执行文件正常运行)

  

ifort src / main.F90 C:\ Temp \ lib \ test.lib / include:“C:\ Temp \ mod”$(Opts)/ link $(Lnk)

但这不起作用

  

ifort src / main.F90 / include:“C:\ Temp \ mod”$(Opts)/ link /LIBPATH:"C:\Temp\lib\test.lib“$(Lnk)

我很感激为什么后一个命令不起作用的任何建议。它是命令行格式,通过它我链接典型的库。后面的命令下面的链接错误引用了test.lib中包含的Fortran类定义的类型绑定过程。

(请注意,ifort和链接器版本包含在下面。平台是Windows 7,我在上述两种情况下都使用make via MinGW)

ifort src/main.F90  /include:"C:\Temp\mod" /fpe:0 /real_size:64 /integer_size:64 /names:lowercase /iface:cref /iface:mixed_str_len_arg /assume:byterecl /extend_source:132 /O3 /traceback  /INCREMENTAL:NO /link /LIBPATH:"C:\Temp\lib\test.lib" /STACK:100000000 /MAP /MANIFEST /NODEFAULTLIB:msvcrt.lib
Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 12.0.4.196 Build 20110427
Copyright (C) 1985-2011 Intel Corporation.  All rights reserved.

Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.

-out:main.exe 
-subsystem:console 
-incremental:no 
/LIBPATH:C:\Temp\lib\test.lib 
/STACK:100000000 
/MAP 
/MANIFEST 
/NODEFAULTLIB:msvcrt.lib 
main.obj 
main.obj : error LNK2019: unresolved external symbol test_module_mp_setsegmentvalue_8 referenced in function MAIN__
main.obj : error LNK2019: unresolved external symbol test_module_mp_getsegmentvalue referenced in function MAIN__
main.obj : error LNK2001: unresolved external symbol test_module_mp_setsegmentvalue_4
main.exe : fatal error LNK1120: 3 unresolved externals
make: *** [main] Error 1120
makefile:7: recipe for target `main' failed

1 个答案:

答案 0 :(得分:1)

/ LIBPATH链接器选项指定要在其中搜索库的目录。第二个命令似乎是用它来指定库文件本身。

从命令行删除/LIBPATH:选项前缀,或从目录搜索规范中分离库名称 - /LIBPATH:"C:\Temp\lib" ..... test.lib