VC++调用Fortran的dll遇到Stack overflow的问题

我用Fortran做了动态链接库,用MFC来调用,但是运行时出现了Stack overflow,我查了下,应该是Fortran程序中数组太大导致的。请问高手,有什么方法可以解决吗?我用的是VC++2008。谢谢啊!
我已将部分数组改为指针了,但是程序运行到 ALLOCATE 的时候中断了。请高人指点啊,不知还是不是空间问题。

第1个回答  2012-04-02
Stack overflow 的一种情况,希望有参考价值: 是因为在主程序里定义的parameter,然后call subroutine时传入subroutine里就变成了变量,subroutine不再将它视为parameter了,然后定义矩阵时就会出错。只有在主程序里它还被视作parameter。 。。就是说在子程序中,需要对数组的上下界给出明确的定义,而不是通过主程序传递过来。在子程序中使用动态数组也可以。但麻烦了点。
第2个回答  2010-07-20
不一定是这样,首先你要看看你的FORTRAN函数是怎样定义的,是否与在C中的声名是一致的!如果不一致就有可能导致此问题。
另:
如果是栈空间过小,还可以将部分数组改成动态分配空间就行了。

不是改为指针,改成动态数组就行了。本回答被提问者和网友采纳
第3个回答  2010-07-19
增加stack空间

...exception:stack overflow这是哪方面的错误呀?
overflow: 溢出 可能是某一个变量超过了某一个范围引起的

fortran运行结果中出现了overflow的错误,是什么意思,造成这个问题的原因...
也可能是 stack overflow,表示堆栈溢出,表示程序中静态数组太多,太大,导致程序堆栈内存不够。此时,可调整静态数组为可分配数组,或者增加堆栈空间

...源程序已遗失),这几天突然提示stack overflow。
堆栈溢出,很正常,有时候是输入的数据文件有问题,有时候是系统变量遭到不明原因的更改

C#调用FORTRAN 的DLL 出现 尝试读取或写入受保护的内存,这通常指示其 ...
一般这个错误是因为数据问题,你的数据类型是不是有问题?ZJ_CX.dll是什么语言写的?调用的时候是不是涉及到类型转换问题?

Fortran 调用C++ 的dll
program fftw_test use, intrinsic :: iso_c_binding implicit none interface real(C_DOUBLE) function SPA_Windowing(DataInEU, WindowType, DataCount, FilterFlag) bind(C, name='SPA_Windowing') use, intrinsic :: iso_c_binding import real(C_DOUBLE),dimension(*) ...

相似回答
大家正在搜