24小时热门版块排行榜    

查看: 1605  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

positron

木虫 (职业作家)

[交流] 【求助】帮忙看一个提示,子程序还是undefined reference to

main程序调用子程序还是出现undefined reference to错误
(sample.f90是一个子程序文件,是有4个subroutine构成,在main函数中call sample.f90中的其中一个子函数时出现错误)
main.f90程序和sample.f90都能单独通过ifort -c -fpp 编译

但是用程序提供的makefile时,就出现undefined reference to‘模块名_mp_子程序名_’错误

错误主要是make时出现,最后停止编译


看了sample.f90函数,发现开头有提示:


! ======================================================================
! The dummy interfaces for the multigrid library are specified in
! this file. Note that this is not a module, otherwise the linker
! will not find these subroutines.
! ======================================================================



不知真个开头提示的具体意思,也不知道咋通俗的翻译一下,如何理解如何才能正确的引用子程序?

我要是把这个sample.f90程序改写成一个模块,如何才能reference to这些子程序?


[ Last edited by positron on 2010-9-8 at 21:14 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

coolrainbow

木虫 (著名写手)

未来国家冻凉


positron(金币+5):谢谢参与
用nm命令查看一下有没有这个符号,这样就知道了,如果符号名称变了,就换成变得那个
技术博客:http://hi.baidu.com/coolrainbow/blog
3楼2010-09-10 07:43:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

snoopyzhao

至尊木虫 (职业作家)


positron(金币+5):谢谢参与
如果不涉及保密,可以贴出来看看
2楼2010-09-09 19:53:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)


positron(金币+5):谢谢参与
这个好像是说sample.f90里面不是一个模块,所以在这个文件里面单独提供了一个interface给你。我觉得你可以把interface的部分复制到main.f90里面去试试。


如果改成module的话也比较见到,你该好后,直接在main.f90里面加use modle_name就行了

[ Last edited by hakekill on 2010-9-10 at 11:34 ]
5楼2010-09-10 11:32:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见