Я пытаюсь использовать f2py для взаимодействия моих программ Python с моими модулями Fortran.
Я использую платформу Win7.
Я использую последнюю версию Anaconda 64 (1.7) в качестве стека Python + NumPy.
Мой компилятор Fortran - это последний компилятор Intel Fortran 64 (версия 14.0.0.103, сборка 20130728).
У меня возник ряд проблем при выполнении f2py -c -m PyModule FortranModule.f90 --fcompiler=intelvem
Последнее, в чем я не могу разобраться, это то, что похоже, что последовательность флагов, передаваемых f2py / distutils компилятору, не соответствует тому, что ожидает ifort.
Я получаю серию предупреждений о неизвестных параметрах при вызове ifort.
ifort: command line warning #10006: ignoring unknown option '/LC:\Anaconda\libs'
ifort: command line warning #10006: ignoring unknown option'/LC:\Anaconda\PCbuild\amd64'
ifort: command line warning #10006: ignoring unknown option '/lpython27'
Я подозреваю, что это связано с ошибками, которые я получаю от компоновщика в конце
error LNK2019: unresolved external symbol __imp_PyImport_ImportModule referenced in function _import_array
error LNK2019... and so forth (there are about 30-40 lines like that, with different python modules missing)
и заканчивается простым
fatal error LNK1120: 42 unresolved externals
Я предполагаю, что это связано с тем, что в последовательности параметров отсутствует флаг / link. Из-за этого параметры / l / L не передаются компоновщику, и компилятор считает, что они адресованы ему.
Команда ifort, сгенерированная f2py, выглядит так:
ifort.exe -dll -dll Pymodule.o fortranobject.o FortranModule.o module-f2pywrappers2.o -LC:\Anaconda\libs -LC:\Anaconda\PCbuild\amd64 -lPython27
Я понятия не имею, почему «-dll» повторяется дважды (мне пришлось изменить этот флаг с исходного «-shared»).
Теперь я попытался изучить коды f2py и distutils, но не понял, как добавить дополнительную ссылку / в выводе команды. Я даже не смог определить, где генерируется этот вывод.
Если кто-то сталкивался с этой проблемой в прошлом и / или может иметь какие-то предложения, я был бы очень признателен.
Спасибо за уделенное время