gpt4 book ai didi

c# - 使用 cx_freeze 进行精细编译后出现 "import clr"问题

转载 作者:行者123 更新时间:2023-11-28 18:34:38 25 4
gpt4 key购买 nike

我在使用 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

时崩溃

如果有人有想法,我不知道该怎么做才能让它发挥作用?

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

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 应用程序也会崩溃......这让我有 2 个选择,

  • 要么我的try except 不好,然后为什么?
  • clr 确实存在问题,我需要帮助。

编辑 2:

我尝试导入来自 .pyd 的其他模块,认为可能是 .exe 找不到它们,但所有的 import我试过没有任何问题。

编辑 3:

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

问题是:我的 dll 在 C# 中,显然 ctypes 不能很好地支持导入...我遇到了类似 WindowsError: [Error -532462766] Windows 错误 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

最佳答案

所以我最终成功了:

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

最终 import clr 成功了...

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

关于c# - 使用 cx_freeze 进行精细编译后出现 "import clr"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33647006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com