我试图从C++访问Fortran公共块结构中的数组。
我有一个与C++和Fortran混合的示例代码。C++和Fortran:从C++访问Fortran公共块中的数组时出错Error
Fortran语言:
integer a(5),b
common /sample/ a,b
a(1) = 1
a(2) = 5
a(3) = 10
a(4) = 15
a(5) = 20
b = 25
然后在C++:
extern "C"{
extern struct{
int *a,b;
}sample_;
从C++,如果我尝试打印值sample_.b
:
printf("sample b:%d\n",sample_.b);
我得到的值( 2):sample b:5
如果我尝试打印任何其他数组a值我只是得到一个segementation故障...
printf("sample_.a[1]=%d\n",(int)sample_.a[1]);
printf("sample_.a[0]=%d\n",(int)sample_.a[0]);
我在做什么错?¿任何想法¿?
我想,也许我必须将数组“a”的长度也传递给C++,但如果是这样,我也不知道该怎么做。
你是不是该数组传递给C++代码。您直接访问公共块作为外部结构。请相应地纠正你的问题。我已经改正了标题。 –