我正在编译一个名为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/