Fortran Coder

标题: 调用动态链接库中返回字符串的函数出错 [打印本页]

作者: andy8496    时间: 2020-2-22 00:36
标题: 调用动态链接库中返回字符串的函数出错
求教:

以下代码正确:
[Fortran] 纯文本查看 复制代码
program test
write(*,*) itoa(9)
pause

contains

function itoa(i)
implicit none
  character(16) :: itoa
  integer,intent(in) :: i
  write(itoa,"(I0)") i
  return
end function
end

但是一旦把这个函数封装到dll中,
[Fortran] 纯文本查看 复制代码
module test
contains
function itoa(i)
!DEC$ ATTRIBUTES STDCALL,REFERENCE,DLLEXPORT,ALIAS:"itoa"::itoa
implicit none
  character(16) :: itoa
  integer,intent(in) :: i
  write(itoa,"(I0)") i
  return
end function

end module

再去调用它就出错了: write(*,*)  itoa(9)

出错: Program Exception - access violation

怎么办?


作者: fcode    时间: 2020-2-22 13:30
!DEC$ ATTRIBUTES STDCALL,REFERENCE,DLLEXPORT,ALIAS:"itoa"::itoa
改为
!DEC$ ATTRIBUTES DLLEXPORT,ALIAS:"itoa"::itoa

在主程序加上 use test,并把 test.mod 文件放在include路径,以便编译器找到。

作者: andy8496    时间: 2020-2-23 20:53
多谢!我再试试




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2