Fortran Coder

查看: 19|回复: 0
打印 上一主题 下一主题

[求助] 新人求教, fortran控制台引用dll, 编译不通过

[复制链接]

1

帖子

1

主题

0

精华

新人

F 币
9 元
贡献
3 点
跳转到指定楼层
楼主
发表于 昨天 15:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 huxiao 于 2025-9-17 15:57 编辑

现有一个解决方案下有三个项目其中fortran相关有2个,console和 dynamic-link Library  ,  console控制台用于调试 fortran 编译的dll.  
C# winform 调用fortran编译的dll负责界面化.

dll项目属性设置如下
general/output directory =$(SolutionDir)lib
fortran/Output files/module path=$(SolutionDir)lib

console 项目属性设置如下
fortran/Additional Include Directories=$(solutionDir)lib
linker/Additional Library Directories=$(solutionDir)lib
linker/input/Additional Dependecies=MathFunctions.lib

MathFunctions.dll项目 代码如下
[Fortran] syntaxhighlighter_viewsource syntaxhighlighter_copycode
module mathfunctions_export
    use, intrinsic :: iso_c_binding, only: c_float
    implicit none

contains

    function add(a, b) result(res) bind(c, name="add")
        import :: c_float
        real(c_float), value :: a, b
        real(c_float) :: res
        res = a + b
    end function add

end module mathfunctions_export


console 项目代码如下
[Fortran] syntaxhighlighter_viewsource syntaxhighlighter_copycode
program FortranConsole
    use, intrinsic :: iso_c_binding, only: c_float  ! 如果需要在主程序里也用 c_float
    use mathfunctions_export           ! use 你要的模块和函数
    implicit none

    ! 本地变量
    real(c_float) :: num1, num2, result
    integer :: choice
    logical :: running =.true.

    ! 调用 add 函数
    num1 = 5.0_c_float  ! 注意:如果你用了 c_float,字面量要带 _c_float 后缀
    num2 = 3.0_c_float
    result = add(num1, num2)  ! 直接调用模块里的 add
    print *, "Result of addition: ", result

end program FortranConsole



已确定解决方案根目录下 lib文件夹内 已生成 MathFunctions.dll , mathfunctions_export.mod , MathFunctions.lib ,MathFunctions.pdb

现在问题 当编译 fortran coonsole 时, 报错 error LNK2019: 无法解析的外部符号 add,函数 MAIN__ 中引用了该符号 ,  始终找不到原因在哪里



您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2025-9-18 01:23

Powered by Tencent X3.4

© 2013-2025 Tencent

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