Ctypesに問題があります。私のタイプ変換は正しく、エラーは私には意味がありません。 「arg-ct.c_char_p(logfilepath)」行でエラーが発生しました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))
c_char_p
はbytes
オブジェクトを取得するため、最初にstring
をbytes
に変換する必要があります。
ct.c_char_p(logfilepath.encode('utf-8'))
別の解決策は、c_wchar_p
タイプはstring
を取ります。
完全を期すために:stream_initialize(b'stream_log.txt')
として呼び出すこともできます。文字列の前のb
に注意してください。これにより、文字列はbytes
オブジェクトとして解釈されます。