【发布时间】:2014-05-30 05:51:19
【问题描述】:
我正在为 .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,@987654330 的所有模块@ 不使用。
调试崩溃后给出的错误是:
Unhandled exception at 0x1E0AA0C5 (python27.dll) in xxx.exe: 0xC0000005: Access violation reading location 0x00000004.
它在_callthreadstart 函数上中断。
OptimRestriction 是一个很长的程序,它导入了很多模块(也在 .exe 文件夹中)。以下是它的导入列表:
from GrafFunc import *
from LogFunc import *
from DinamicaFunc import *
from Dinamica2 import *
from CDR import *
...
import sys
import cProfile"
在我看来,线程启动时间太长,因为调试开始加载这些文件很长时间,所以它给出了错误。我对么?如果是这样,如果OptimRestriction 及其导入器不使用这些文件,为什么还要加载这些文件?
编辑:新信息。它在这条线上说Can't import module 崩溃:
pModule = PyImport_Import(pName);
【问题讨论】:
标签: python c++ dll embed python-c-api