3

我的小程序import clr崩溃了.exe

以下是我在程序中使用的导入:

import sys
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from PyQt4.QtGui import QApplication, QMainWindow
from PyQt4.Qt import QGridLayout, QWidget
import clr
executablePath = 'E:\\PythonWS\\MyDll\\'
sys.path.append(executablePath)
clr.AddReference("MyDll")
import MyDll

基本上程序编译得很好,并且由于cx_freeze我得到了一个可执行文件,但是当我使用日志启动它时,它会崩溃import clr

如果有人有想法,我不知道该怎么做才能使它工作?

编辑: 我添加了一个try-except,import clr如下所示:

try:
    logger.info('in try')
    import clr
    executablePath = 'E:\\PythonWS\\MyDll\\'
    sys.path.append(executablePath)
    clr.AddReference("MyDll")
    dllPath = clr.FindAssembly('MyDll')
    import MyDll
    ts = MyDll.TestSystem('127.0.0.1', '127.0.0.1')
    print ts.mainBoard.isConnected()
except Exception as e:
    logger.info("Unexpected error: {}".format(e))

但即使try应用程序崩溃......这让我有两个选择,

  • 要么我try except的不好,然后为什么?
  • 有一个真正的问题,clr我需要帮助。

编辑2:

我尝试导入其他模块,这些模块.pyd可能是因为.exe找不到它们,但import我尝试过的所有操作都没有任何问题。

编辑3:

所以!在查看其他帖子后,我发现还有其他导入 dll 的方法:ctypes例如使用。

问题是:我的 dll 在C#并且显然导入不是很好地支持ctypes......我遇到了类似的错误WindowsError: [Error -532462766] Windows Error 0xE0434352,这对我没有多大帮助,因为它似乎是 Windows 中的一个非常普遍的错误,但这让我觉得可能是事情这使我的程序在导入 clr 时崩溃是一样的。有谁知道该错误与什么有关?

所以我回到使用 .NET clr,但仍然没有运气

作为记录:我已经尝试过 python 32 位和 64 位。这里有更多信息

#with python 32 bits
platform architecture:  ('32bit', 'WindowsPE') 
sys.platform:  win32
os.name:  nt

#with python 64 bits
platform architecture:  ('64bit', 'WindowsPE')
sys.platform:  win32
os.name:  nt
4

1 回答 1

1

所以我最终使它工作:

最后,pythonNET 安装正确,但似乎版本不是最好的(不确定是否不是最新的,或者不是正确的版本,或者有点),所以我删除了 pythonNET 的每个文件(我复制粘贴的)在这里和那里确保它被看到)并下载了最新版本的.whl这里)(不是pip正在下载的版本)。

最终import clr工作...

我希望这对你们中的一些人有所帮助:)

于 2015-11-16T11:40:21.923 回答