gpt4 book ai didi

带有 C# DLL 的 Python CLR 模块 - AddReference 有效,导入无效

转载 作者:行者123 更新时间:2023-12-02 16:48:34 58 4
gpt4 key购买 nike

这个问题与我无法分享的敏感数据有关,但问题很简单。我正在使用 PyCharm 2017.1.2、python 2.7.13。

我有一个特定格式的文件(一种加密的 XML,无法解析),需要将其转换为 Excel 来修改某些值,然后将其导出回原始格式。出于某些安全原因,我无法绕过此转换。很好,我有一个可以用于此目的的 Excel 插件,位于两个 C# DLL 内,它可以“导入”Excel 格式并将其“导出”回奇怪的 XML。

我也无法使用 IronPython,因为我正在设计的软件使用的 IronPython 库无法管理,所以我只能使用旧的 Python 2.7。

我目前正在使用 pythonnet 中的 clr 模块将 DLL 导入到我的软件中。导入代码(不合理)如下所示:

import clr
import sys

sys.path.append('C:/My/Path/To/The/DLLs/Folder')
clr.AddReference('Microsoft.Office.Interop.Excel, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c')
clr.AddReference('My.ClassLib.DLL')
clr.AddReference('My.ExcelImportExport.DLL')

import Microsoft.Office.Interop.Excel as Excel
try:
from My.ClassLib.DLL import XMLParser
import My.ExcelImportExport.DLL
from My.ExcelImportExport.DLL import DeviceSettingsUtility
except Exception, e:
print unicode(e)

我正在使用的两个 DLL 都位于同一文件夹中。 CLR 添加 DLL 引用没有问题。

奇怪的是:'My.ClassLib.DLL' 一切正常:我可以毫无问题地访问它的类和方法。但是,一旦我尝试导入 My.ExcelImportExport.DLL 或之后的行,我就会收到一个 ImportError:没有名为 My.ExcelImportExport.DLL 的模块。使用 clr 添加引用后,列出所有程序集时,我会看到 My.ClassLib.DLLMy.ExcelImportExport.DLL,因此问题不会出现从这里。问题来自 My.ExcelImportExport.DLL

我用反编译器查看了这两个 DLL,但没有发现任何可以使 ClassLib.DLL 工作的东西,并且可以解释为什么另一个不能工作。

最后,我的问题:DLL(C# 代码)中需要包含哪些内容才能让 clr 导入它?

最佳答案

您必须尝试使用​​最新版本的 pythonnet,您可以使用链接 https://github.com/pythonnet/pythonnet/wiki/Installation 从 github 获取该版本。

我相信这会起作用,因为我使用的是 python 版本 3.8.8

关于带有 C# DLL 的 Python CLR 模块 - AddReference 有效,导入无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45035058/

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