我正在为一个.exe程序制作一个.dll并将python嵌入其中。用这个简单的.py程序运行得很好
from time import *
##import OptimRestriction
def test_callsign(b):
...(simple script)
return
我所做的是将.py程序、Dll和Lib文件夹复制到xxx.exe文件文件夹,就像是说here。在
但是一旦我取消了OptimRestriction
的导入注释,调试就会崩溃。首先,当对初始化并处理Python的线程的调用被调用时,它开始加载符号:_ctypes.pyd
,_sockets.pyd
,sst_pyd
,harshlib.pyd
,unicodedata.pyd
,tkinter.pyd
,所有OptimRestriction
不使用的模块。在
调试崩溃后给出的错误是:
Unhandled exception at 0x1E0AA0C5 (python27.dll) in xxx.exe: 0xC0000005: Access violation reading location 0x00000004.
它破坏了_callthreadstart
函数。在
OptimRestriction
是一个长程序,它导入许多模块(也在.exe文件夹中)。以下是其进口商品清单:
在我看来,线程启动的时间太长,因为调试开始加载这些文件很长时间,因此它会给出一个错误。我说的对吗?如果是这样的话,为什么要加载那些文件,如果OptimRestriction
及其重要部分不使用它们呢?在
在编辑:新信息。在这一行说Can't import module
时会崩溃:
pModule = PyImport_Import(pName);
在把问题简化为几行代码后,我发现问题出在一些模块打开.txt文件读取的行中。在
我认为把.txt文件放在.py程序的同一个文件夹中是正确的做法,但似乎我需要将它们复制到我的c++插件的文件夹中(我想这是因为当我调试时,由于pyton的写入和读取是在那里完成的,所以我的插件文件夹的系统路径发生了变化)
问题解决了!在
相关问题 更多 >
编程相关推荐