我正在尝试使用f2py来将我的python程序与我的Fortran模块进行接口。f2py与英特尔Fortran编译器
我在Win7平台上。
我使用最新的Anaconda 64(1.7)作为Python + NumPy堆栈。
我的Fortran编译器是最新的英特尔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选项不会传递给链接器,并且编译器认为这些选项是发给他的。
通过f2py产生的ifort命令如下:
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