Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由于堆栈大小不足,python中出现dll加载错误?_Python_Fortran - Fatal编程技术网

由于堆栈大小不足,python中出现dll加载错误?

由于堆栈大小不足,python中出现dll加载错误?,python,fortran,Python,Fortran,我有一个python代码,它导入了由f2py(来自fortran例程)创建的dll。现在,如果fortran中的数组太大,python程序就会崩溃。我如何处理这个问题?通过增加堆栈大小?还是堆?我已经尝试过研究这个问题,但我仍然不明白如何增加堆栈,或者应该使用堆来代替,以及应该如何做。。???Python总是在我尝试导入dll的那一行崩溃,即在“importf90_例程”行。有人也提到了线程,但我不知道如何使用它们。希望有人能帮助我 Visual Studio(可能还有Windows SDK)附

我有一个python代码,它导入了由f2py(来自fortran例程)创建的dll。现在,如果fortran中的数组太大,python程序就会崩溃。我如何处理这个问题?通过增加堆栈大小?还是堆?我已经尝试过研究这个问题,但我仍然不明白如何增加堆栈,或者应该使用堆来代替,以及应该如何做。。???Python总是在我尝试导入dll的那一行崩溃,即在“importf90_例程”行。有人也提到了线程,但我不知道如何使用它们。希望有人能帮助我

Visual Studio(可能还有Windows SDK)附带了一个名为EDITBIN的实用程序,这正是您想要的。请参阅以供参考

要检查堆栈大小,请使用

dumpbin /headers python.exe
并在“可选标头值”下查找“堆栈保留大小”


请注意,您必须将修改后的Python.exe分发给所有希望运行您的代码的人

您的基本问题是在堆栈上存储大量数据。这是一个糟糕的设计,可能是因为Fortran代码的实现方式

大型数组需要存储在堆上并在那里动态分配。要解决这个问题,您需要理解并相应地修改Fortran代码


ALLOCATE
关键字是如何在Fortran 90中创建堆分配数据的。但是,许多编译器都有一些选项,用于在堆上分配数组,这可能是您目前最方便的方法。

您确定这是堆栈溢出问题吗?你怎么会这么认为呢?请提供你正在使用的python版本、Fortran和C编译器以及用来生成DLL的编译标志的信息。修改python exe听起来是解决这个问题的一个相当激进的方法!我不得不在网站上为一位客户做类似的事情,因为pythonservice.exe(来自pywin32)使用的堆栈比Python小,而且我的程序在作为Windows服务运行时会崩溃。在Python中遇到堆栈溢出时,您并不总是有很多其他选项,上面的技巧对我来说是一个救生圈。请注意,pywin32的最新版本应该已经解决了这个问题。我认为OP的问题实际上是堆栈分配的数组太大,无法放在堆栈上。
editbin /stack:size_in_bytes python.exe