Fortran Coder

标题: VBA与Fortran的字符串传递的问题 [打印本页]

作者: andy8496    时间: 2015-1-27 00:43
标题: VBA与Fortran的字符串传递的问题
如附件所示,我需要传递字符串到dll中,再返回。做了很多尝试了,比如ByVal,每个字符串后增加一个long来表示长度,等等,还是没成功。
请高手帮给看看,小弟在此谢过了!

Debug.rar

12.3 KB, 下载次数: 12


作者: 楚香饭    时间: 2015-1-27 08:49
如果是 Fortran 调用 Fortran,那么非常简单的。都不需要写 stdcall,也不需要 ByValue,也不需要增加 long 。

[Fortran] 纯文本查看 复制代码
Program www_fcode_cn
  use Test_mode
  Implicit None
  Character*30 c , r , s
  r = "rr"
  s = "ss"
  call str_cal_test( r , s , c )
  write(*,*) trim(c)
End Program www_fcode_cn


[Fortran] 纯文本查看 复制代码
module Test_Mode
  implicit none
contains
  subroutine str_cal_test(rr,ss,outp)
   !DEC$ ATTRIBUTES DLLEXPORT,ALIAS:"str_cal_test"::STR_CAL_TEST
    implicit none
    character(*),intent(in) :: rr,ss
    character(*),intent(out) :: outp
    outp = trim(rr)//trim(ss)
  end subroutine
  
end module


QQ截图20150127084612.png (11.64 KB, 下载次数: 385)

QQ截图20150127084612.png

作者: andy8496    时间: 2015-1-27 09:24
谢谢版主!Fortran是很容易。我想知道VBA能实现吗?VBA实数整数没问题,但是这个字符串我试了好久,也按照彭老师书上VB的搞法试了,还是没搞定。
作者: fcode    时间: 2015-1-28 09:11
对不起,我对 VBA 没有研究,我也不知道该如何测试 VBA。

混编,用什么混,你在主楼就应该提到。

作者: pasuka    时间: 2015-1-28 09:48
andy8496 发表于 2015-1-27 09:24
谢谢版主!Fortran是很容易。我想知道VBA能实现吗?VBA实数整数没问题,但是这个字符串我试了好久,也按照 ...

用GCC的话,参考这个例子
https://gcc.gnu.org/onlinedocs/g ... tines-and-Functions

作者: andy8496    时间: 2015-1-28 09:51
哦 ,我VBA放在附件Excel中了,还是谢谢了。现在我用整数代替,不传字符串了。算是解决了燃眉之需。再次感谢热心相助!




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2