2011-12-12 49 views
8

我很新的python和ctypes。我試圖完成一個看起來很容易的任務,但會得到意想不到的結果。我試圖將一個字符串傳遞給一個c函數,所以我使用c_char_p類型,但它給了我一個錯誤消息。簡而言之,這就是發生了什麼:在python中使用ctypes方法給出了意想不到的錯誤

>>>from ctypes import * 
>>>c_char_p("hello world") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: string or integer address expected instead of str instance 

這是怎麼回事?

回答

8

在Python 3.x中,"text literal"確實是一個unicode對象。你想使用字節字符串像b"byte-string literal"

>>> from ctypes import * 
>>> c_char_p('hello world') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: string or integer address expected instead of str instance 
>>> c_char_p(b'hello world') 
c_char_p(b'hello world') 
>>> 
+0

非常感謝你的幫助。原來我在看python 2.7文檔,這就是爲什麼我很困惑。 –

相關問題