Fortran Coder

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

[混编] QT调用Fortran 传递字符串问题

[复制链接]

25

帖子

10

主题

0

精华

熟手

F 币
158 元
贡献
82 点
跳转到指定楼层
楼主
发表于 2019-6-29 00:51:09 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

   我现在学习用qt调用Fortran的dll文件,向dll传递一个文件名,但是我将他输出来是乱码不知道是为啥,请大神帮忙指出错误。
FORTRAN 代码:
   SUBROUTINE SUB(c)
   !DEC$ ATTRIBUTES DLLEXPORT::SUB
  !DEC$ ATTRIBUTES REFERENCE:: c
       character ::c
   write(*,*)c
END SUBROUTINE SUB


  QT代码:
    QString a;   typedef void(*QTsub)(QString b);    QLibrary dll("DLL2.dll");   
if(dll.load())
   {     
               QTsub sub=(QTsub)dll.resolve("SUB");            
              a=“hello,World”;               
           sub(a);  
}



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

25

帖子

10

主题

0

精华

熟手

F 币
158 元
贡献
82 点
沙发
 楼主| 发表于 2019-7-1 15:11:35 | 显示全部楼层
vvt 发表于 2019-6-29 10:21
Qt 的 QString 用的是 unicode 编码,需要转换成ANSI编码,才能“直接”被fortran使用

QByteArray ba = a. ...

您好,首先很感谢您的解答,但是我按照您的方式修改了qt代码 ,发现输出的还是一堆乱码,是不是因为我Fortran的dll程序有问题啊?

25

帖子

10

主题

0

精华

熟手

F 币
158 元
贡献
82 点
板凳
 楼主| 发表于 2019-7-1 17:12:14 | 显示全部楼层
感谢大神 已经解决 ,谢谢指导。

25

帖子

10

主题

0

精华

熟手

F 币
158 元
贡献
82 点
地板
 楼主| 发表于 2019-7-1 19:57:51 | 显示全部楼层
fcode 发表于 2019-7-1 17:30
问题有2个:

1. typedef void(*QTsub)(QString b); 应该为 typedef void(*QTsub)(char*);

是雪球大人嘛?谢谢指导, 我会努力改正规范
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-8 15:42

Powered by Tencent X3.4

© 2013-2024 Tencent

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