Fortran Coder

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

[混编] C++调用fortran生成的dll文件的问题求助

[复制链接]

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

楼主
发表于 2017-2-6 11:37:51 | 显示全部楼层
请以文本(而非截图)的方式,贴出 C++ 代码和 fortran 代码。

1963

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1357 元
贡献
574 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2017-2-6 17:48:48 | 显示全部楼层
建议你用标准的混编方法:ISO_C_Binding
不但在 VS+IVF 可以用,在其他编译器(gcc,gfortran)也可以用。
它是语法规范的标准用法。


[C++] 纯文本查看 复制代码
extern "C" {
  void GETSTRING(char *A,
    int LEN);
}
void main()
{
  char STR[] = "hello";
  GETSTRING(STR, strlen(STR));
  return;
}

[Fortran] 纯文本查看 复制代码
subroutine getstring(a,n) Bind( C , Name = "GETSTRING" )
  !DEC$ ATTRIBUTES DLLEXPORT ::GETSTRING
  use ,Intrinsic::ISO_C_Binding
  implicit none
  type(C_PTR) , value :: a         !c++主程序中传递进来的“a”变量,是C语言的指针
  integer , value :: n                      !传入的字符串长度
  character(len=n),pointer::pa     !这是Fortran的字符串指针
  call c_f_pointer( a , pa ) !把c语言的指针转换成fortran字符串指针
  write(*,*) pa
end subroutine

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

本版积分规则

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

GMT+8, 2024-5-7 12:31

Powered by Tencent X3.4

© 2013-2024 Tencent

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