У меня есть программа на Фортране в форме
PROGRAM main
USE a_one
USE a_two
...
END PROGRAM main
с makefile:
# Paths
MDIR = ./main
SDIR = ./solver
ODIR = ./obj
CASE = $(SDIR)/CASE/test_
TOP = .
# include machine specific settings based on WLT_COMPILE_HOSTNAME environment variable
FC = ifort
CC = mpic++ #icc
LINKLIB = -lstdc++ -shared-intel -lifcore
FFLAGS = -fpp -O1 -DPTR_INTEGER8 -warn nousage -module $(ODIR) -g -traceback
CCFLAG = -O1 -g -DDATABASE_INTERFACE_LOWERCASE -DDATABASE_APPEND_UNDERSCORE
# Define rule to make .f90 and .f files
$(ODIR)/%.o : $(SDIR)/%.f90
$(FC) -c $(FFLAGS) $< -o $@
# Define rule to make C objects
$(ODIR)/%.cc.o : $(SDIR)/C++/%.cxx
$(CC) $(CCFLAG) -c $< -o $@
# Data structure type: Tree DB (C++ variable size nodes)
CC_OBJ = tree.cc.o
# set executable name based on DB and CASE
EXEC = $(dir ${CASE})/test_new.out
# Define list of all object files to be made
_OBJ = module_a.o module_b.o $(_CASE).o $(_CASE).PARAMS.o $(CC_OBJ)
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
MAIN_OBJ = $(ODIR)/main.o
All: my_main
my_main : $(OBJ) $(MAIN_OBJ)
$(FC) $(FFLAGS) $(OBJ) $(MAIN_OBJ) -o $(EXEC) $(LINKLIB)
Как вы можете видеть, помимо кодов на фортране, есть некоторые используемые коды c ++и в этой программе.Я пытаюсь изменить этот код как подпрограмму
SUBROUTINE main (in_matrix, out_matrix, n)
USE a_one
USE a_two
...
END SUBROUTINE main
и вызвать его из кода Python.Я следовал инструкциям в
https://modelingguru.nasa.gov/docs/DOC-2343, чтобы использовать для этого 'f2py', и не смог заставить его работать.Затем я понял, что у меня есть C ++ коды, которые, вероятно, вызывают проблему.Мне было интересно, как мне изменить указания в приведенной выше ссылке, чтобы принять во внимание код на С ++.Спасибо.