2016-06-17 72 views
3

我遇到了ctypes的問題。我認爲我的類型轉換是正確的,錯誤對我沒有意義。 錯誤行「arg - ct.c_char_p(日誌文件路徑)」 TypeError:預期的字節或整數地址,而不是str實例Python 3.5,ctypes:TypeError:預期的字節或整數地址,而不是str實例

我在python 3.5和3.4都試過。

功能我打電話:

stream_initialize('stream_log.txt') 

Stream_initialize代碼」

def stream_initialize(logfilepath): 
    f = shim.stream_initialize 
    arg = ct.c_char_p(logfilepath) 
    result = f(arg) 

    if result: 
     print(find_shim_error(result)) 
+2

Python 3中最後一行會失敗 - 「print」是一個函數,需要括號。 – Kupiakos

回答

4

c_char_p需要bytes對象,所以你必須轉換你的stringbytes第一:

ct.c_char_p(logfilepath.encode('utf-8')) 

另一個解決方案是使用c_wchar_p類型,其中需要string

+0

編輯:nvm還在學習堆棧溢出 – toshbar

0

爲了完整起見,: 也可以將其稱爲stream_initialize(b'stream_log.txt')。請注意字符串前面的b,這會導致它被解釋爲bytes對象。

相關問題