风和 发表于 2021-10-17 11:29:09

求助:关于彭国伦fortran95上用fortran调用c例题

正在学习fortran与c语言混编,完全根据教材上的案例上的代码进行编辑,为什么老报错?使用的是ivf2010编辑,恳请各位大佬给个能调用c的方法。
module cprog
interface
    subroutine SUBA(a)
    !DEC$ ATTRIBUTES C, ALIAS:'_sub1' :: SUBA
      integer :: a
      !DEC$ ATTRIBUTES REFERENCE :: a
      end subroutine
    subroutine SUBB(a)
    !DEC$ ATTRIBUTES C, ALIAS:'_sub2' :: SUBB
      integer :: a
      !DEC$ ATTRIBUTES VALUE :: a
      end subroutine
end interface
end module cprog

program main
use cprog
implicit none
integer(8):: a=10

call SUBA(a)
call SUBB(a)

stop
end program


#include <stdio.h>

#ifdef __cplusplus
extern "C" {
#endif

void sub1(int *num)
{
      printf("%d\n",*num);
}

void sub2(int num)
{
      printf("%d\n",num);
}

#ifdef __cplusplus
}
#endif








fcode 发表于 2021-10-17 18:27:32

D:\OurDoc\Desktop\sdw>cl -c a.c -nologo
a.c

D:\OurDoc\Desktop\sdw>ifort f.f90 a.obj -nologo

D:\OurDoc\Desktop\sdw>f
10
10

D:\OurDoc\Desktop\sdw>


module cprog
interface
    subroutine SUBA(a) Bind(C,Name="sub1")
      integer(8) :: a
      end subroutine
    subroutine SUBB(a) Bind(C,Name="sub2")
      integer(8) , value:: a
      end subroutine
end interface
end module cprog

program main
use cprog
implicit none
integer(8):: a=10

call SUBA(a)
call SUBB(a)

stop
end program

风和 发表于 2021-10-17 21:48:07

本帖最后由 风和 于 2021-10-17 21:53 编辑

然而,仍然会报上述错误,有没有可能是,我编译的lib是32位的:-dizzy:,还是我的设置有问题,已经卡好多天了

fcode 发表于 2021-10-17 22:44:00

我亲自测了是OK的,你遇到问题的话,应该是一些地方没有设置正确,或者操作上有问题。

论坛里对于操作问题不是很容易沟通,你可以加我们的QQ群:2338021,找我(臭石头雪球)

li913 发表于 2021-10-20 12:12:26

https://www.bilibili.com/video/BV1XD4y1S7jz?p=6
页: [1]
查看完整版本: 求助:关于彭国伦fortran95上用fortran调用c例题