(libgfortran.a) 绝对符号“_strtoflt128”用作 REL32 搬迁的目标

(libgfortran.a) Absolute symbol '_strtoflt128' used as target of REL32 relocation

提问人:Zoltán Jéhn 提问时间:9/12/2017 最后编辑:Vladimir F Героям славаZoltán Jéhn 更新时间:8/16/2018 访问量:459

问:

我正在尝试在Windows上将Fortran代码与C++链接。Fortran 代码是使用 MinGW 的 gfortran 编译的,其他 C++ 部分是使用 MSVC 编译的。

问题是链接器生成以下错误消息:

libgfortran.a(read.o):错误 LNK2016:绝对符号“_strtoflt128”用作 REL32 重定位的目标

借助英特尔 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 位上进行了测试,它产生了相同的错误。

visual-studio cmake fortran mingw linker-errors

评论

2赞 Rodrigo Rodrigues 8/18/2018
你能提供一个最小的可重复的例子吗?
0赞 CristiFati 8/23/2018
您确定混合构建工具链是个好主意吗?有什么理由不通过 g++ 构建 C++ 代码吗?检查 stackoverflow.com/questions/45340527/...(包含编译器输出的第 2 部分输出一些混音)。
0赞 CristiFati 8/23/2018
在为调试发布构建代码时会发生这种情况吗?关闭全程序优化msdn.microsoft.com/en-us/library/0zza0de8.aspx) 怎么样?
0赞 CristiFati 8/24/2018
有机会获得 Fortran 代码(和编译器标志)吗?
1赞 steve 2/2/2021
strtoflt128用于将字符串转换为实体(即四精度)。您可能需要在 -lquadmath 中链接。REAL(16)

答: 暂无答案