如何将C#dll导入python
发布时间:2020-12-16 06:50:20 所属栏目:百科 来源:网络整理
导读:我有一个第三方c#dll,它是在dot net 4.5中创建的,其平台目标是x86.我想把它导入到 python脚本中,我从Rob Deary的答案 here开始.但是我无法让他的例子起作用.我正在使用python版本2.7.6,我得到一个AttributeError,如下所示. File "C:Python27Libctypes__i
我有一个第三方c#dll,它是在dot net 4.5中创建的,其平台目标是x86.我想把它导入到
python脚本中,我从Rob Deary的答案
here开始.但是我无法让他的例子起作用.我正在使用python版本2.7.6,我得到一个AttributeError,如下所示.
File "C:Python27Libctypes__init__.py",line 378,in __getattr__ func = self.__getitem__(name) File "C:Python27Libctypes__init__.py",line 383,in __getitem__ func = self._FuncPtr((name_or_ordinal,self)) AttributeError: function 'add' not found 请注意,我知道使用Ironpy和Python for dot net,但我需要专门用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(默认值)将不起作用.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |