我正在尝试从C++访问Fortran公共块结构中的数组。
我有一个混合了C++和Fortran的示例代码。
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);我得到了a(2)的值:sample b:5
如果我尝试打印任何其他数组-a值,我只会得到一个分段错误...
printf("sample_.a[1]=%d\n",(int)sample_.a[1]);
printf("sample_.a[0]=%d\n",(int)sample_.a[0]);我做错了什么?你知道吗?
我想,也许我也必须把数组"a“的长度传递给C++,但如果是这样的话,我也不知道该怎么做。
发布于 2012-05-07 21:03:56
在我看来,您的FORTRAN数据实际上布局为
struct {
int a[5];
int b;
}你在一台机器上,sizeof(int) == sizeof(int*)。
https://stackoverflow.com/questions/10481999
复制相似问题