Fortran Coder

查看: 12232|回复: 8
打印 上一主题 下一主题

[混编] c++向Fortran编写的dll中传递字符串变成乱码

[复制链接]

5

帖子

2

主题

0

精华

入门

F 币
35 元
贡献
11 点
跳转到指定楼层
楼主
发表于 2016-11-3 10:52:35 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 deserve0 于 2016-11-3 10:52 编辑

一、编程思路描述:
(1)用Fortran编写了一个DLL,此DLL中导出的子程序有一个参数,为字符串(字符串的长度不定,仅限英文)。
(2)用C++编写了主程序,调用此DLL,向DLL中传入一个字符串(例如路径名)。

二、出现的问题:
(1)传入DLL的字符串变成了乱码。如图:

三、代码:
(1)C++代码:
[Fortran] 纯文本查看 复制代码
#include <stdio.h>
#include <string.h>

extern "C" {void _stdcall   vlhm_forecast(char *);}
int main()
{
	char *inputfile="C:\\Users\\www\\Desktop\\model_2\\cpp_main\\31005700.tem";
	printf("before calling:\n");
	printf("filename=\"%s\"",inputfile);
	printf("\n");
	vlhm_forecast(inputfile);
}


(2)Fortran的DLL代码:
[Fortran] 纯文本查看 复制代码
subroutine vlhm_forecast(filename)

!DEC$ ATTRIBUTES STDCALL,DLLEXPORT::vlhm_forecast

character(len=*)::filename            !c++主程序中传递进来的“Inputfile”变量
write(*,*)"dll里的filename值是:"
write(*,*)filename

end subroutine



error1.png (22.58 KB, 下载次数: 313)

输出乱码图

输出乱码图
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

5

帖子

2

主题

0

精华

入门

F 币
35 元
贡献
11 点
沙发
 楼主| 发表于 2016-11-3 21:41:24 | 显示全部楼层
谢谢大神!!让我又有了更深的理解
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-5-8 05:00

Powered by Tencent X3.4

© 2013-2024 Tencent

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