我试图在Windows上使用C ++链接Fortran代码。 Fortran代码是使用MinGW的gfortran编译的,其他C ++部分是用MSVC编译的。
问题是链接器生成以下错误消息:
libgfortran.a(read.o):错误LNK2016:绝对符号' _strtoflt128'用作REL32重定位的目标
使用英特尔Fortran编译器可以正常工作。
工具:
GNU Fortran 6.3.0
MSVC 2013
我使用了CMake生成的Visual Studio项目,该项目自动调用Microsoft链接器。链接器参数(已清除):
/MANIFEST /NXCOMPAT /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib" "libgfortran.a" "libmingwex.a" "libmingw32.a" "libquadmath.a" "libgcc_s.a" "libgcc.a" "libgcc_eh.a" /MACHINE:X86 /SAFESEH:NO /INCREMENTAL:NO /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1 /machine:X86 /NODEFAULTLIB:"libcpmt.lib"
我也测试了64位,它会产生相同的错误。