【发布时间】:2019-08-27 17:20:25
【问题描述】:
链接到从 .def 文件生成的 .lib 文件会触发 LNK1127:库已损坏
我正在做一个 scipy 的自定义构建。当前失败的步骤是在将依赖于 fortran dll 编译器的 c dll 与 Mingw gfortran 链接时。
确切的错误行是
build\temp.win-amd64-3.5\Debug\libdqag.I4OTSSA4SIYUTZ6NF6DULDGYRZ5LBVRR.gfortran-win_amd64.lib : 致命错误 LNK1127: 库已损坏
所以我认为是那些在命令行中链接的库中的那个库是损坏的。
Gfortran 生成了 fortran .dll 和一个 .def 文件
然后lib.exe从.def文件生成一个.lib文件
但是当使用该 lib 文件作为最后的链接行时,我得到了 LNK1127。
似乎我不能将损坏的文件归咎于 gfortran,因为 lib.exe 生成了它。 def 文件对我来说似乎有效,并且 lib.exe 没有抱怨。所以没有垃圾箱。 .lib 是正确的输出平台 (x64)。 Scipy 构建脚本出于某种原因使用了 x86_64 Visual Studio 工具(x86 二进制文件来构建 x64 二进制文件),但这并没有明显的理由成为问题。
关于如何调试的任何提示? 检查 def 或 lib 文件中可能有什么问题的工具可能是什么? 还是命令行会误导我,而另一个 lib 文件是损坏的?
【问题讨论】: