C++ Fortran混合编程问题
我想将C++和Fortron混合编程(主要是C++调用Fortran)的代码包编译成一个dll,文件结构如下 ampcormodule.cppampcormodule.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、找不到对应的库文件
我猜我的情况可能是找不到对应的库文件,但具体怎么改我不完全没有头绪,纠结了好久,请各位大佬帮帮忙!
把所有 o 文件放一起
类似
gfortran ampcor.o ampcormodule.o ampcorAllocateDeallocate.o ampcorGetState.o -shared -fPIC -o ampcor5.dll vvt 发表于 2018-1-20 14:24
把所有 o 文件放一起
类似
gfortran ampcor.o ampcormodule.o ampcorAllocateDeallocate.o ampcorGetState. ...
您好,放在一起我试过,能一定程度解决问题,但是还是cpp那个文件还是会有东西找不到
结果报这样的的错:
\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
.
.
.
帖子里好像不能放图。请问我可以联系您向您请教关于C++和fortran混编的这个问题吗? 可以放图,用附件上传即可。
找到 ampcorstate 模块中的 i_centerxiarr 和 r_shftxoscarr,并且让编译器也找到。
你大概是没有包含 ampcorstate.o 文件。
你可以加入本论坛QQ群2338021,也可以在论坛继续跟帖。
vvt 发表于 2018-1-20 20:20
可以放图,用附件上传即可。
找到 ampcorstate 模块中的 i_centerxiarr 和 r_shftxoscarr,并且让编译器也 ...
嗯嗯,确实是少加了ampcorstate.o文件,抱歉没有看帖子,谢谢前辈!
页:
[1]