2016-07-13 81 views
-1

我有一個dll和一個c頭文件.h。例如,有一些功能可以接受cenum;如何在ctypes python中傳遞enum作爲參數?

enum Type 
{ 
    typeA, 
    typeB 
}; 

和功能

bool printType(Type type); 

現在我想用dll此功能從一個Python腳本。我已經導入了圖書館。它是成功的。我可以訪問其他功能,它的工作原理。所以有一個功能就像我上面給出的例子那樣需要一個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 
+0

請發佈*精確*回溯(即複製並粘貼文本) –

+0

我已發佈原始回溯。 –

回答

1

如果你讀the enum docs on pip你會看到:

Python 3 now has in its standard library an enum implementation (also available for older Python versions as the third-party flufl.enum distribution) that supersedes this library.

你真正想要enum34

+0

attributeError:Instancmethod對象沒有atrribute類型'argtypes' –

+0

@GulluButt你可能想用你的代碼更新你的問題,這是產生這個錯誤 –

相關問題