Reputation: 293
I'm having an issue with ctypes. I think my type conversion is correct and the error isn't making sense to me. Error on line " arg - ct.c_char_p(logfilepath) " TypeError: bytes or integer address expected instead of str instance
I tried in both python 3.5 and 3.4.
function i'm calling:
stream_initialize('stream_log.txt')
Stream_initialize code"
def stream_initialize(logfilepath):
f = shim.stream_initialize
arg = ct.c_char_p(logfilepath)
result = f(arg)
if result:
print(find_shim_error(result))
Upvotes: 14
Views: 26708
Reputation: 3139
For completeness' sake:
It is also possible to call it as stream_initialize(b'stream_log.txt')
. Note the b
in front of the string, which causes it to be interpreted as a bytes
object.
Upvotes: 2
Reputation: 525
c_char_p
takes bytes
object so you have to convert your string
to bytes
first:
ct.c_char_p(logfilepath.encode('utf-8'))
Another solution is using the c_wchar_p
type which takes a string
.
Upvotes: 35