如何在ctypes python中传递enum作为参数?

时间:2016-07-13 16:06:42

标签: python enums ctypes

我有一个dll和一个c头文件.h。有些函数接受c enum,例如;

enum Type
{
    typeA,
    typeB
};

和一个功能

bool printType(Type type );

现在我想从python脚本中使用dll的这个函数。我导入了这个库。它很成功。我可以访问其他功能,它的工作原理。所以有一个功能就像我上面给出的例子一样,它以Enum作为参数。

在此处查看其他帖子以及互联网上的其他内容后我尝试了什么;

# -*- coding: utf-8 -*-
from ctypes import *
from enum import IntEnum

class CtypesEnum(IntEnum):
    @classmethod
    def from_param(cls, obj):
        return int(obj)

class Type(CtypesEnum):
    typeA     = 0
    typeB     = 1
我曾经这样用过它。

setEnumtype = self.printType
setEnumtype.argtypes = [Type]
setEnumVale.restype = c.c_int
result = self.printType(setEnumtype.typeA)

口译员说,它知道IntEnum。我已经通过pip安装了enum

还有其他直接的方法吗?

回溯:

from enum import IntEnum
ImportError: cannot Import Name IntEnum

1 个答案:

答案 0 :(得分:1)

如果您阅读the enum docs on pip,您会看到:

  

Python 3现在在其标准库中有一个enum实现(也可用于旧的Python版本作为第三方flufl.enum发行版),它取代了这个库。

你真的想要enum34