Ok again I've worked it after asking the question, sorry.
Answer is:
function print_key(key_::Ptr{Uint8}, key_length_::Ptr{Int8})
key_length = unsafe_load(key_length_)
key = bytestring(key_, key_length*4)
println("jlkey: ", key)
return nothing
end
const print_key_c = cfunction(print_key, Void, (Ptr{Uint8}, Ptr{Int8}))
Problem was I was confused about what a Union was, still can't find any
clear documentation (as i said above it get mixed up with union) but I
worked it it mean *either* of the types rather than some strange grouping
of them.
The *4* is requied because the original string was Cwchar_t so 4 times the
size. I'm not sure of the legitimacy of changing the pointer type from
Ptr{Cwchar_t} to Ptr{Uint8} ??? but it seems to work