0

我试图确定为什么在链接具有包含类型绑定过程的类的静态库时收到错误消息。

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

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

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,我在上述两种情况下都通过 MinGW 使用 make)

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
4

1 回答 1

1

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

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

于 2013-10-17T00:14:34.110 回答