Я пытаюсь использовать f2py для сопряжения моих программ python с моими модулями Fortran.f2py с компилятором Intel Fortran
Я на платформе Win7.
Я использую последнюю версию Anaconda 64 (1.7) как стек Python + NumPy.
Мой компилятор Fortran - это новейший компилятор Intel Fortran 64 (версия 14.0.0.103 Build 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, но не понял, как добавить дополнительную/ссылку в выход команды. Я даже не смог найти, где генерируется этот вывод.
Если кто-то столкнулся с этой проблемой в прошлом и/или может иметь некоторые предложения, я бы очень ее оценил.
Спасибо за ваше время
я столкнулся такие проблемы, но, к сожалению, я не мог найти пути вокруг них; Я закончил создание Makefile, который собрал все вместе. Вот Makefile: http://pastebin.com/ChSxLzSb. – bdforbes
Спасибо за файл! У меня появилась возможность взглянуть на это только сегодня. В конечном итоге это была огромная боль, чтобы заставить ее работать из-за большого количества путов и различных файлов для извлечения. Но, в конце концов, я смог сделать то, что хотел. Я думаю, что очень сложно придумать окончательный ответ, поскольку он, похоже, сильно зависит от установленных платформ и цепей инструментов. – Tesla
Итак, каков был ваш подход в конце? Удалось ли вам перехватить distutils? – bdforbes