gpt4 book ai didi

c# - 如何将 C# dll 导入 python

转载 作者:太空宇宙 更新时间:2023-11-03 12:05:33 26 4
gpt4 key购买 nike

我有一个第三方 c# dll,它是在 dot net 4.5 中创建的,目标平台是 x86。我想将它导入到 python 脚本中,我已经开始使用 Rob Deary 的回答 here .但是我无法让他的例子发挥作用。我使用的是 python 版本 2.7.6,我收到如下所示的 AttributeError。

File "C:\Python27\Lib\ctypes\__init__.py", line 378, in __getattr__
func = self.__getitem__(name)
File "C:\Python27\Lib\ctypes\__init__.py", line 383, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'add' not found

请注意,我知道用于 dot net 的 Ironpython 和 Python,但我需要让它专门与 C python 一起工作。这是我生成自定义 c# 库的示例代码:ClassLibrary1.dll

using System;
using System.Runtime.InteropServices;
using RGiesecke.DllExport;

class Test
{
[DllExport("add", CallingConvention = CallingConvention.Cdecl)]
public static int TestExport(int a, int b)
{
return a + b;
}
}

这是生成错误的 python 脚本

import ctypes
lib = ctypes.cdll.LoadLibrary('ClassLibrary1.dll')
lib.add(3,5)

当我使用下面的行时,这是我得到的输出。所以至少我知道它正在加载 dll,但我不确定为什么找不到该函数。

>>> lib.__dict__
{'_FuncPtr': <class 'ctypes._FuncPtr'>, '_handle': 254476288, '_name': 'ClassLibrary1.dll'}
>>>

任何帮助将不胜感激。谢谢

最佳答案

如 RGiesecke.DllExport 文档所述,您在构建代码时需要针对特定​​架构(x86 或 x64)。将其设置为任何 CPU(默认值)将不起作用。

关于c# - 如何将 C# dll 导入 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33285732/

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