我一直使用MinGW和GNU Fortran编译器在Windows上编译Fortran程序已经有一段时间了,这一直是一个成功的方法。但是,过去4天以来我一直遇到以下错误:
应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序。
只有在运行我自己编写并使用MinGW/gfortran组合编译的应用程序时才会出现该错误。使用Visual Studio和iFort进行编译时,我运行应用程序没有问题。该错误似乎具有追溯性:以前使用gfortran编译和运行完美的应用程序现在也会崩溃,尽管我没有重新编译它们。这让我认为这是一个动态库问题。在线搜索表明这可能是64位dll与32位应用程序之间的兼容性问题。
我正在使用Windows 7。在开始出现问题之前,我记得做的最后一件事是尝试更新MinGW;我使用了mingw-get update 和 mingw-get upgrade命令行。
在网上寻找解决方法后,我尝试了以下修复措施:
- 重新安装Visual C++运行时环境
- 重新安装.NET框架
- 下载并替换了一堆.dll文件,如mscvr100.dll、mscvr100d.dll等
- 卸载并重新安装MinGW以确保我有最新的gcc版本
- 对简单应用程序(类似“Hello World!”)运行了Dependency Walker
Dependency Walker告诉我找不到几个.dll文件(完整列表:API-MS-WIN-APPMODEL-RUNTIME-L1-1-0.DLL、API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL、API-MS-WIN-CORE-WINRT-L1-1-0.DLL、API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL、API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL、API-MS-WIN-SHCORE-SCALING-L1-1-1.DLL、DCOMP.DLL、GPSVC.DLL、IESHIMS.DLL)。
它还用红色标示出 libquadmath-0.dll(似乎是libgfortran-3.dll依赖的)。实际上,看起来libquadmath-0.dll是32位程序中间的64位DLL。当使用Dependency Walker打开该.dll文件时,我可以看到此库中的所有模块都是x86,除了库本身是x64(DW的CPU列)。我不确定这是如何可能的/如何修复。该库位于Python/Anaconda文件夹中(我几周前安装了Python和Anaconda,当时没有出现问题)。
如果有人知道如何在不重新安装Windows的情况下使我的环境再次工作,我将非常感激!谢谢!!