【发布时间】:2017-05-31 15:52:09
【问题描述】:
我想了解 C++/FORTRAN 互操作性的最新改进,尤其是在字符串方面。以下是我不成功的尝试,请帮助我纠正或建议更好的解决方案。 我的编译器是 gcc 4.8.5
在 C++ 中
#include <iostream>
extern "C"{
void SayHello(char*);
}
int main(int argc, char** argv){
char * name = argv[1];
SayHello(name);
return 0;
}
在 Fortran 中
module MyModule
contains
subroutine SayHello(people) bind(c,name="SayHello")
use, intrinsic :: iso_c_binding
character, dimension(50), intent(in) :: people
write(*,*) "Hello ", people
end subroutine
end module MyModule
【问题讨论】:
-
为什么您的尝试不成功?如果
argv[1]的长度至少不是 50,您肯定会遇到问题。也就是说,请显示任何错误或消息。 -
由于我不知道为什么的原因(阅读:我在这里的原因),我收到以下编译错误,上面的代码是pastebin.com/Q4e48RkV
-
我不熟悉 C++,但在我在答案中发布的 C 版本中,打印留给 Fortran 程序。你需要
std::cout吗? -
哎呀,我会改正的
标签: c++ string fortran fortran-iso-c-binding