我正在编译一个名为prog.f的fortran程序。它包含一个名为test.inc的包含文件。
这在下面成功运行,并显示找到了我的包含文件。我生成了一个prog.so文件。

f2py -c prog.f -m prog


但是,当我从python调用此模块时,出现以下错误消息:

Python 2.7.3 (default, Aug  1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import prog
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: ./prog.so: undefined symbol: unknown_function_


我怀疑与编译参数有关,但是我对Fortran不太熟悉。我还需要包括我的包含文件吗?如果可以,怎么办?

最佳答案

是的,您需要包含文件。它可能很简单:

f2py -c include_file.f prog.f -m prog


尽管我还没有测试过。另外,您可能需要使用fortran include语句将include_file包含在prog中。此外,如果您对C更加熟悉,实际上我所知道的所有fortran编译器都使用prog.F的约定。是应该由cpp预处理的fortran代码。因此,您可能也可以通过这种方式包含文件。

关于python - 带包含文件的f2py,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14920244/

10-12 00:24