VBA与Fortran的字符串传递的问题
如附件所示,我需要传递字符串到dll中,再返回。做了很多尝试了,比如ByVal,每个字符串后增加一个long来表示长度,等等,还是没成功。请高手帮给看看,小弟在此谢过了!
如果是 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
谢谢版主!Fortran是很容易。我想知道VBA能实现吗?VBA实数整数没问题,但是这个字符串我试了好久,也按照彭老师书上VB的搞法试了,还是没搞定。 对不起,我对 VBA 没有研究,我也不知道该如何测试 VBA。
混编,用什么混,你在主楼就应该提到。
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
哦 ,我VBA放在附件Excel中了,还是谢谢了。现在我用整数代替,不传字符串了。算是解决了燃眉之需。再次感谢热心相助!
页:
[1]