将Fortran字符串引用传递给C ++和C ++设置值

时间:2015-09-25 14:28:20

标签: c++ fortran

我有一个简单的Fortran应用程序,我正在尝试将字符引用传递给C ++ dll方法,然后让C ++方法设置引用字符串,但我无法使其工作。这只是完整代码的一部分,因为我甚至无法实现这一点。

Fortran代码

function addHiddenValue(val){
  document.getElementById("partner").value = val;
}

C ++代码

program FortranConsoleExample

implicit none

interface 
    !!!
    subroutine reverseString(str_out, str_in, str_in_len) bind(C, name="ReverseString3")
      USE, INTRINSIC :: ISO_C_BINDING

      integer(C_INT), VALUE, INTENT(IN) :: str_in_len
      character, dimension(*), intent(IN) :: str_in
      character(kind=C_CHAR), dimension(512), intent(out) :: str_out
    end subroutine reverseString
end interface

! Variables
character*512 :: strResult

call reverseString(strResult, "tacobell", len(strResult))
print *, strResult


end program FortranConsoleExample

1 个答案:

答案 0 :(得分:4)

好吧,如果你写:

void  ReverseString3(char * buff, const char *text, int buffLen)
    {
        strncpy(buff,"yellow", 6);
    }

它可以工作,你必须注意初始化为“”Fortran部分中的字符串,例如:

strResult = " "

查看Assigning strings to arrays of characters

使用指令buff = "yellow"为变量buff分配字符串“yellow”的地址,保持原始缓冲区不变。