When constructing a ctypes.c_char_p with a unicode string, a confusing error message is reported: > python -c "import ctypes; ctypes.c_char_p('foo')" Traceback (most recent call last): File "", line 1, in TypeError: string or integer address expected instead of str instance Since "string" and "str" seem like essentially the same thing, the error message doesn't make sense. This message is obviously due to the change to unicode as the default string instance in Python 3. The error message should probably be updated to read "bytes or integer address expected instead of a str instance". It's probably also worth scanning through the ctypes codebase for similar messages.
Here's a patch. I found a similar instance that says "unicode string or integer address expected instead of %s instance", but it's inside an "if (!PyUnicode_Check(value)) {}" so it should be ok ("unicode string" could be replaced to 'str' though).