我试图将Python 2.6嵌入到MATLAB(7.12)中.我想嵌入一个用C编写的mex文件.这对于使用标量的小型简单示例很有用.但是,如果导入Numpy(1.6.1),MATLAB崩溃了.我说无论如何,因为我已经尝试了许多方法来加载numpy库,包括
在python模块(.py)中:
from numpy import *
Run Code Online (Sandbox Code Playgroud)随着PyRun_SimpleString
在MEX文件:
PyRun_SimpleString(“from numpy import *”);
Run Code Online (Sandbox Code Playgroud)调用numpy函数Py_oBject_CallObject
:
pOut = PyObject_CallObject(pFunc, pArgs);
Run Code Online (Sandbox Code Playgroud)最初,我认为这可能是将Numpy嵌入C中的问题.但是,当嵌入在使用Visual Studio 2005 C编译器的/ MD(多线程)开关的命令行编译的简单C文件中时,Numpy工作正常.接下来,我想我只需要在MATLAB中更改make文件以包含/ MD开关.没有这样的运气,mexopts.bat与/ MD开关编译.我还手动注释了Numpy init模块中的行,以找出崩溃的MATLAB.似乎加载任何扩展名为pyd的文件会导致MATLAB崩溃.在NumPy中加载的第一个这样的文件是multiarray.pyd.MATLAB文档描述了如何使用Visual Studio调试mex文件,并在下面放置了错误消息.在这一点上,我知道问题是pyd的内存问题和MATLAB的一些冲突.有趣的是,我可以在MATLAB中使用系统命令来启动使用numpy的python中的进程,并且不会生成错误.我将在MATLAB的错误消息下面粘贴,然后在可视化工作室中粘贴MATLAB崩溃的过程中的DEBUG输出.但是,我并没有粘贴整个事情,因为第一次机会的例外列表很长.有没有解决这个集成问题的建议?
MATLAB error
Matlab has encountered an internal problem and needs to close
MATLAB crash file:C:\Users\pml355\AppData\Local\Temp\matlab_crash_dump.3484-1:
------------------------------------------------------------------------
Segmentation violation detected at Tue Oct 18 12:19:03 2011
------------------------------------------------------------------------
Configuration:
Crash Decoding : Disabled
Default Encoding: windows-1252
MATLAB License : 163857
MATLAB Root : C:\Program Files\MATLAB\R2011a
MATLAB Version : 7.12.0.635 (R2011a)
Operating System: …
Run Code Online (Sandbox Code Playgroud)