我有一个fortran派生类型
type, bind(c):: waveform
real(c_double)::x
real(c_double)::y
real(c_double)::lat
real(c_double)::windspeed !Wind speed at that point
real(c_double)::a !Willougby A parameter
real(c_double)::startX
real(c_double)::startY
real(c_double)::data(600)
结束类型波形
我写了一个函数,它返回一个波形类型的数组
function getWilloughby()
type(waveform), allocatable, dimension(:)::getWilloughby
我想从C ++程序中调用Fortran函数,所以我创建了一个对应于派生类型和原型函数的结构。
waveform *getWilloughby_();
我有点卡住了,因为根据我的理解,C ++没有按值返回数组,而且我不确定我的Makefile是否正确。
编译时,我收到以下错误。
undefined reference to `getWilloughby_()'
这是我的Makefile
ORIG_INC_PATH = -I/usr/include
ORIG_LAB_PATH = -L/usr/lib
CUDA_INC_PATH = -I/usr/local/cuda-6.0/targets/x86_64-linux/include
CUDA_LIB_PATH = -L/usr/local/cuda-6.0/targets/x86_64-linux/lib
full:
g++ -c cross_correlation.cpp -L/usr/local/cuda/lib64 -lcudart -lcublas -lcufft -lafcuda -o cross_correlation.o -g $(CUDA_INC_PATH) $(CUDA_LIB_PATH)
gfortran -c load_files.f90
g++ -o matched_filter load_files.o cross_correlation.o -L/usr/local/cuda/lib64 -L/usr/lib/gcc/x86_64-linux-gnu/4.6 -lgfortran -lcudart-lcublas -lcufft -lafcuda $(CUDA_INC_PATH) $(CUDA_LIB_PATH)
我在C ++中声明函数是错误的吗?我是否错误地编写了Makefile?或者还有别的东西在玩吗?