我有一个调用Fortran例程的Python程序 . 这些Fortran例程包含在f90wrap(https://github.com/jameskermode/f90wrap)中,我现在正试图让设置在Windows上同样运行(因为我与那些有时无法切换到Linux的人合作) .

我已经通过MinGW安装工作了gfortran并验证了Fortran程序编译运行没有错误 . 我还验证了Python 2.7安装没有问题,并且能够使用pip添加numpy,matplotlib和scipy模块而不会出现问题 . MinGW和Python都是64位,在Windows 10上运行 . 我也有CMake创建Makefiles,使用mingw-make编译独立的fortran程序,所以剩下的唯一部分(为了让Windows工作正常)是为了确保Fortran-90的Python包装器 . 这就是我遇到一些问题的地方 .

我在Powershell中运行mingw-make(我相信它在cmd.exe中执行) .

Q1:f90wrap的pip安装失败,出现绝对路径/相对路径错误(https://github.com/jameskermode/f90wrap/issues/73

A1:我下载了源代码并运行了“python setup.py install”,这也被卡住了 . 我遇到了Windows 10,Python 2.7和mingw-w64的“multiple_definition”错误 .

F:/程序/ MinGW的/ mingw64 / bin中/../ lib中/ GCC / x86_64的-W64-的mingw32 / 7.2.0 /../../../../ x86_64的-W64-mingw32的/ lib目录/ .. /lib/libmingw32.a(lib64_libmingw32_a-atonexit.o):atonexit.c:(.text 0xc0):atexit的多重定义'F:\ Programs \ Python \ libs / libmsvcr90.a(deoks01081.o):( . text 0x0):首先在这里定义F:/ Programs / mingw / mingw64 / bin /../ lib / gcc / x86_64-w64-mingw32 / 7.2.0 /../../../../ x86_64-w64- mingw32 / lib /../ lib / libmingw32.a(lib64_libmingw32_a-mingw_helpers.o):mingw_helpers.c :( . text 0x0):多个定义of_decode_pointer'F:\ Programs \ Python \ libs / libmsvcr90.a(deoks00231.o) ):( . text 0x0):首先在这里定义F:/ Programs / mingw / mingw64 / bin /../ lib / gcc / x86_64-w64-mingw32 / 7.2.0 /../../../ .. /x86_64-w64-mingw32/lib/../lib/libmingw32.a(lib64_libmingw32_a-mingw_helpers.o):mingw_helpers.c:(.text 0x10):`_encode_pointer'的多重定义F:\ Programs \ Python \ libs / libmsvcr90.a(deoks00241.o):( . text 0x0):首先在这里定义collect2.exe:错误:ld返回1退出状态错误:命令“gcc -g -shared build \ temp.w in-amd64-2.7 \ Release \ f90wrap \ arraydatamodule.o build \ temp.win-amd64-2.7 \ Release \ programs \ python \ lib \ site-packages \ numpy \ f2py \ src \ fortranobject.o -LF:\ Programs \ Python \ libs -LF:\ Programs \ Python \ PCbuild \ amd64 -lpython27 -lmsvcr90 -o build \ lib.win-amd64-2.7 \ f90wrap \ arraydata.pyd“失败,退出状态为1