Fortran Coder

查看: 8428|回复: 4
打印 上一主题 下一主题

[混编] C++ Fortran混合编程问题

[复制链接]

5

帖子

2

主题

0

精华

新人

F 币
30 元
贡献
13 点
跳转到指定楼层
楼主
发表于 2018-1-20 13:26:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   我想将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、找不到对应的库文件
       我猜我的情况可能是找不到对应的库文件,但具体怎么改我不完全没有头绪,纠结了好久,请各位大佬帮帮忙!


分享到:  微信微信
收藏收藏 点赞点赞1 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2018-1-20 14:24:11 | 只看该作者
把所有 o 文件放一起
类似
gfortran ampcor.o ampcormodule.o ampcorAllocateDeallocate.o ampcorGetState.o -shared -fPIC -o ampcor5.dll

5

帖子

2

主题

0

精华

新人

F 币
30 元
贡献
13 点
板凳
 楼主| 发表于 2018-1-20 15:27:57 | 只看该作者
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混编的这个问题吗?

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
地板
发表于 2018-1-20 20:20:18 | 只看该作者
可以放图,用附件上传即可。

找到 ampcorstate 模块中的 i_centerxiarr 和 r_shftxoscarr,并且让编译器也找到。
你大概是没有包含 ampcorstate.o 文件。

你可以加入本论坛QQ群2338021,也可以在论坛继续跟帖。

5

帖子

2

主题

0

精华

新人

F 币
30 元
贡献
13 点
5#
 楼主| 发表于 2018-1-24 09:42:55 | 只看该作者
vvt 发表于 2018-1-20 20:20
可以放图,用附件上传即可。

找到 ampcorstate 模块中的 i_centerxiarr 和 r_shftxoscarr,并且让编译器也 ...

嗯嗯,确实是少加了ampcorstate.o文件,抱歉没有看帖子,谢谢前辈!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 16:46

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表