本帖最后由 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
|