我有一个简单的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
答案 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”的地址,保持原始缓冲区不变。