|
我想将C++和Fortron混合编程(主要是C++调用Fortran)的代码包编译成一个dll,文件结构如下 ampcormodule.cpp
ampcormodule.h
ampcor.F
ampcorAllocateDeallocate.F
已经成功用WinGW配的gfortran和g++分别将.cpp和.F文件做成了.o文件
接下来将他们编译成dll, 命令行语句为:gfortran ampcor.o -shared -fPIC -o ampcor5.dll 这时候出现问题:无论是单独编译.cpp文件对应的.o文件( ampcormodule.o),还是编译.F文件对应的.o文件( ampcor.o),都会报类似如下的错:
\Local\Temp\ccy2IZmN.o:ampcorGetState.f:(.text+0x40): undefined reference to `__ampcorstate_MOD_i_centerxiarr
\Local\Temp\ccy2IZmN.o:ampcorGetState.f:(.text+0x96): undefined reference to `__ampcorstate_MOD_r_shftxoscarr
ampcormodule.o:ampcormodule.cpp:(.text+0x1889): undefined reference to `getCov3_f'
ampcormodule.cpp:(.text+0x1433): undefined reference to `getSNR_f'
ps:编译器本身问题应该不大,因为我用简单的helloWorld代码做测试,能成功运行
网上查了好久,这个问题大致可以总结为:1、32位和64位对不上 2、找不到对应的库文件
我猜我的情况可能是找不到对应的库文件,但具体怎么改我不完全没有头绪,纠结了好久,请各位大佬帮帮忙!
|
|