Fortran Coder

查看: 10662|回复: 5
打印 上一主题 下一主题

[混编] VBA与Fortran的字符串传递的问题

[复制链接]

131

帖子

34

主题

0

精华

宗师

F 币
1602 元
贡献
813 点
跳转到指定楼层
楼主
发表于 2015-1-27 00:43:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如附件所示,我需要传递字符串到dll中,再返回。做了很多尝试了,比如ByVal,每个字符串后增加一个long来表示长度,等等,还是没成功。
请高手帮给看看,小弟在此谢过了!

Debug.rar

12.3 KB, 下载次数: 12

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

737

帖子

4

主题

0

精华

大师

农村外出务工人员

F 币
705 元
贡献
361 点

新人勋章爱心勋章水王勋章元老勋章热心勋章

沙发
发表于 2015-1-27 08:49:18 | 只看该作者
如果是 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, 下载次数: 384)

QQ截图20150127084612.png

131

帖子

34

主题

0

精华

宗师

F 币
1602 元
贡献
813 点
板凳
 楼主| 发表于 2015-1-27 09:24:14 | 只看该作者
谢谢版主!Fortran是很容易。我想知道VBA能实现吗?VBA实数整数没问题,但是这个字符串我试了好久,也按照彭老师书上VB的搞法试了,还是没搞定。

2033

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1641 元
贡献
709 点

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

地板
发表于 2015-1-28 09:11:06 | 只看该作者
对不起,我对 VBA 没有研究,我也不知道该如何测试 VBA。

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

490

帖子

4

主题

0

精华

大宗师

F 币
3298 元
贡献
1948 点

水王勋章元老勋章热心勋章

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

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

131

帖子

34

主题

0

精华

宗师

F 币
1602 元
贡献
813 点
6#
 楼主| 发表于 2015-1-28 09:51:11 | 只看该作者
哦 ,我VBA放在附件Excel中了,还是谢谢了。现在我用整数代替,不传字符串了。算是解决了燃眉之需。再次感谢热心相助!
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-25 10:30

Powered by Tencent X3.4

© 2013-2024 Tencent

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