I had a look specifically at the 64 <-> 32 bit warnings and specifically at the al_ustr stuff (gotta start somewhere, right?) which seems to be a rich source of them.
Generally size_t is used where the size/length of a string is intended, though not always, e.g. al_ustr_to_buffer. If a string position is wanted, int is used. Sometimes negative ints are used to indicate 'from the end' (e.g. al_ustr_offset). However the underlying work is often done by bstrlib which just uses 'int' everywhere. On MSVC and (I think) gcc, int is 32 bits and size_t is 64 on 64 bit platforms, hence the warnings.
I didn't want to just blindly put in casts until the compiler shuts up.