Python 2.7 f2py with intelvem(Windows):Fortran函数链接到kernel32.dll,导致导入错误

Python 2.7 f2py with intelvem(Windows):Fortran函数链接到kernel32.dll,导致导入错误,python-2.7,numpy,dll,fortran,f2py,Python 2.7,Numpy,Dll,Fortran,F2py,当使用f2py(Windows 7 64、英特尔VS2008 C&Visual Fortran Composer XE 2011编译器、Python 2.7、numpy 1.9.2)将FORTRAN90源代码转换为Python DLL时,f2py过程将顺利完成,但DLL不会导入Python,并引发以下错误: >>> import superdll Traceback (most recent call last): File "<stdin>", line 1,

当使用f2py(Windows 7 64、英特尔VS2008 C&Visual Fortran Composer XE 2011编译器、Python 2.7、numpy 1.9.2)将FORTRAN90源代码转换为Python DLL时,f2py过程将顺利完成,但DLL不会
导入Python,并引发以下错误:

>>> import superdll
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed: The specified procedure could not be found.
提示弹出窗口,说明:

"The procedure entry point for_getcmd_arg could not be located in the dynamic link library KERNEL32.DLL."
使用时,我发现我的Fortran过程/函数试图链接到
Kernel32.dll
,而它们显然不存在(参见下面的图片)。这些相同的Fortran过程/函数正确链接到
libifcoremd.dll
(Visual Fortran Composer的一部分)

对于使用VS2008链接器和Visual Fortran编译器(ifort)修复看起来不必要的到
kernel32.dll
的链接,有什么建议吗

注意:所有这些都使用Cygwin和RHEL以及相同版本的Python和numpy,但使用与GNU4.4等效的编译器

编辑:添加了命令行调用:

f2py呼叫:

f2py.py -c --fcompiler=intelvem <list of .f90 files> -m superdll
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -I<path/to/source> -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC /Tc<path/to>\superdllmodule.c /Fo<path/to>\superdllmodule.obj

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -I<path/to/source> -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC /Tc<path/to>\fortranobject.c /Fo<path/to>\fortranobject.obj
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\PCbuild\amd64 /LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\PCbuild\amd64 /EXPORT:initsuperdll <path/to/>superdllmodule.obj <path/to/>fortranobject.obj <list of .o files> <path/to/>superdll-f2pywrappers2.o /OUT:.\superdll.pyd /IMPLIB:<path/to/>superdll.lib /MANIFESTFILE:<path/to/>superdll.pyd.manifest
链接器调用:

f2py.py -c --fcompiler=intelvem <list of .f90 files> -m superdll
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -I<path/to/source> -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC /Tc<path/to>\superdllmodule.c /Fo<path/to>\superdllmodule.obj

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -I<path/to/source> -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC /Tc<path/to>\fortranobject.c /Fo<path/to>\fortranobject.obj
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64\link.exe /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\PCbuild\amd64 /LIBPATH:C:\Python27\libs /LIBPATH:C:\Python27\PCbuild\amd64 /EXPORT:initsuperdll <path/to/>superdllmodule.obj <path/to/>fortranobject.obj <list of .o files> <path/to/>superdll-f2pywrappers2.o /OUT:.\superdll.pyd /IMPLIB:<path/to/>superdll.lib /MANIFESTFILE:<path/to/>superdll.pyd.manifest
C:\程序文件(x86)\Microsoft Visual Studio 9.0\VC\BIN\amd64\link.exe/DLL/nologo/INCREMENTAL:NO/LIBPATH:C:\Python27\libs/LIBPATH:C:\Python27\PCbuild\amd64/LIBPATH:C:\Python27\libs/LIBPATH:C:\Python27\PCbuild\amd64/EXPORT:initsuperdll superdlmodule.obj fortranobject.obj superdll-f2pywrappers2.o/OUT:。\superdll.pyd/IMPLIB:superdll.lib/清单文件:superdll.pyd.manifest

您的vs2008是否按照此处讨论的配置来搜索fortran库?:@Flash,您能解决这个问题吗?我遇到了完全相同的问题。您的vs2008是否按照此处讨论的配置来搜索fortran库?:@Flash,您是否能够解决此问题?我也有同样的问题。