Сбой компиляции f2py: python27.dll Формат файла не распознан

У меня есть несколько Fortran-кодов, которые мне нужны для запуска через Python. В качестве первого шага я пробую простую подпрограмму:

  subroutine multiply(a,b,n,c)
    double precision, intent(in) :: a(n), b(n)
    integer, intent(in) :: n
    double precision(out) :: c(n)
    integer :: i
    do i=1,n
     c(i)=a(i)*b(i)
    end do  
  end subroutine multiply

Затем я пытаюсь скомпилировать с помощью f2py.py:f2py -c --fcompiler=gnu95 --compiler=mingw32 -m foo mult.f

Я получаю сообщение об ошибке при поиске python27.dll: формат файла не распознан. вот вывод из компилятора:

C:\Users\Richard\Documents\Code\fortran>f2py -c --fcompiler=gnu95 --compiler=mingw32 -m foo mult.f
 running build
running config_cc
unifing config_cc, config, build_clib, build_ext, build commands --compiler options
running config_fc
unifing config_fc, config, build_clib, build_ext, build commands --fcompiler options
running build_src
build_src
building extension "foo" sources
f2py options: []
f2py:> c:\users\richard\appdata\local\temp\tmpxwldfw\src.win-amd64-2.7\foomodule.c
creating c:\users\richard\appdata\local\temp\tmpxwldfw
creating c:\users\richard\appdata\local\temp\tmpxwldfw\src.win-amd64-2.7
Reading fortran codes...
        Reading file 'mult.f' (format:fix,strict)
Post-processing...
        Block: foo
                        Block: multiply
Post-processing (stage 2)...
Building modules...
        Building module "foo"...
                Constructing wrapper function "multiply"...
                  multiply(a,b,c,[n])
        Wrote C/API module "foo" to file "c:\users\richard\appdata\local\temp\tmpxwldfw\src.win-amd64-2.7\foomodule.c"
  adding 'c:\users\richard\appdata\local\temp\tmpxwldfw\src.win-amd64-2.7\fortranobject.c' to sources.
  adding 'c:\users\richard\appdata\local\temp\tmpxwldfw\src.win-amd64-2.7' to include_dirs.
copying C:\Users\Richard\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\f2py\src\fortranobject.c -> c:\users\richard\appdata\local\temp\tmpxwldfw\src.win-amd64-2.7
copying C:\Users\Richard\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\f2py\src\fortranobject.h -> c:\users\richard\appdata\local\temp\tmpxwldfw\src.win-amd64-2.7
build_src: building npy-pkg config files
running build_ext
Looking for python27.dll
Building import library (arch=AMD64): "C:\Users\Richard\AppData\Local\Enthought\Canopy\User\libs\libpython27.a" (from C:\Users\Richard\AppData\Local\Enthought\Canopy\User\python27.dll)
**objdump.exe: C:\Users\Richard\AppData\Local\Enthought\Canopy\User\python27.dll: File format not recognized**
Traceback (most recent call last):
  File "C:\Users\Richard\AppData\Local\Enthought\Canopy\User\Scripts\f2py-script.py", line 24, in <module> main()

 ..removed details of stack trace, finally ending with

File "C:\Users\Richard\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\distutils\mingw32ccompiler.py", line 399, in _build_import_library_amd64    generate_def(dll_file, def_file)
File "C:\Users\Richard\AppData\Local\Enthought\Canopy\User\lib\site-packages\numpy\distutils\mingw32ccompiler.py", line 278, in generate_def    raise ValueError("Symbol table not found")
ValueError: Symbol table not found

Я действительно не уверен, что вызывает это. Любые предложения будут ценны.

1 ответ

Ошибка такая же, как упомянутая здесь, "Метод 3". Смотрите решение ОП там

Скомпилируйте модуль fortran с помощью f2py и Python 3.6 в Windows 10

Другие вопросы по тегам