Fortran Coder

Fortran程序中调用C语言程序文件

查看数: 19401 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-1-17 17:44

正文摘要:

本帖最后由 zhu_youren 于 2015-1-17 17:49 编辑 这是一个完整的Fortran程序,里面有一个C语言文件用于字符串处理,调试时提示错误,adBuffer.obj : error LNK2019: 无法解析的外部符号 _PUSHCHARACTERARRAY,该 ...

回复

pasuka 发表于 2015-1-19 08:27:30
fcode 发表于 2015-1-18 20:57
是。同一个公司或组织的编译器,那肯定会方便很多。

我倒不是说麻烦,而是差异大。所以较难有统一的教材 ...

其实,用F03的ISO C BINDING倒是易学,就是各家F和C编译器支持力度不一,譬如VC就比较坑爹
fcode 发表于 2015-1-18 20:57:03
pasuka 发表于 2015-1-18 20:10
其实用GCC的话,C和Fortran混合编程还是挺容易的

是。同一个公司或组织的编译器,那肯定会方便很多。

我倒不是说麻烦,而是差异大。所以较难有统一的教材。
pasuka 发表于 2015-1-18 20:10:26
fcode 发表于 2015-1-18 08:28
好的,不客气,混编因为受编译器影响很大(不同编译器操作就不同),所以基本没有系统的教材。

但编译器通 ...

其实用GCC的话,C和Fortran混合编程还是挺容易的
fcode 发表于 2015-1-18 08:28:08
好的,不客气,混编因为受编译器影响很大(不同编译器操作就不同),所以基本没有系统的教材。

但编译器通常都有帮助文件,里面会有 mix language 方面的章节可以查看。
zhu_youren 发表于 2015-1-17 23:52:50
fcode 发表于 2015-1-17 21:53
C 语言和 Fortran 混编不是那么简单的。

根据你的代码,我写了一个接口:

我对C语言和Fortran混编几乎一点儿都不知道,但是又马上要用到,混编方面能否推荐些书籍或材料,非常感谢!
zhu_youren 发表于 2015-1-17 22:26:20
fcode 发表于 2015-1-17 21:58
另一个简单的方法是,修改 Fortran 工程的属性,使得其接口命名为 C 语言风格:

如下图:

非常感谢!你不知道就被这个卡住,多难受,多坑爹!路漫漫其修远兮,大恩不言谢!
fcode 发表于 2015-1-17 21:58:22
另一个简单的方法是,修改 Fortran 工程的属性,使得其接口命名为 C 语言风格:

如下图:


同时,你需要在函数名后面加上下划线,即
CALL PUSHCHARACTERARRAY(ads1buf, 512)
改为
CALL PUSHCHARACTERARRAY_(ads1buf, 512)

其他函数类同。

这样做的结果就是,Fortran内部也用了 C 语言风格的约定。
fcode 发表于 2015-1-17 21:53:57
C 语言和 Fortran 混编不是那么简单的。

根据你的代码,我写了一个接口:

[Fortran] 纯文本查看 复制代码
Module Intf
        Implicit None
        Interface
          Subroutine PUSHCHARACTERARRAY( a , b )
          !DEC$ ATTRIBUTES DEFAULT, C , ALIAS:'_pushcharacterarray_' :: pushcharacterarray
            Integer :: a , b
          End Subroutine
        End Interface
      End Module Intf


把这个接口添加在 adBuffer.f 文件的开头。然后在 SUBROUTINE PUSHCHARACTER(x) 下方加上:Use Intf

这样就可以找到 PUSHCHARACTERARRAY 这个函数了。

其他函数请依样画葫芦。

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

GMT+8, 2024-12-25 22:30

Powered by Tencent X3.4

© 2013-2024 Tencent

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