andy8496 发表于 2015-1-27 00:43:20

VBA与Fortran的字符串传递的问题

如附件所示,我需要传递字符串到dll中,再返回。做了很多尝试了,比如ByVal,每个字符串后增加一个long来表示长度,等等,还是没成功。
请高手帮给看看,小弟在此谢过了!

楚香饭 发表于 2015-1-27 08:49:18

如果是 Fortran 调用 Fortran,那么非常简单的。都不需要写 stdcall,也不需要 ByValue,也不需要增加 long 。

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

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

andy8496 发表于 2015-1-27 09:24:14

谢谢版主!Fortran是很容易。我想知道VBA能实现吗?VBA实数整数没问题,但是这个字符串我试了好久,也按照彭老师书上VB的搞法试了,还是没搞定。

fcode 发表于 2015-1-28 09:11:06

对不起,我对 VBA 没有研究,我也不知道该如何测试 VBA。

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

pasuka 发表于 2015-1-28 09:48:24

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

用GCC的话,参考这个例子
https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Interoperable-Subroutines-and-Functions.html#Interoperable-Subroutines-and-Functions

andy8496 发表于 2015-1-28 09:51:11

哦 ,我VBA放在附件Excel中了,还是谢谢了。现在我用整数代替,不传字符串了。算是解决了燃眉之需。再次感谢热心相助!
页: [1]
查看完整版本: VBA与Fortran的字符串传递的问题