I'm new to XS, so excuse my basic question I have a C function that received a pointer to string. The string is scanned and each charater code is placed in a INPUT struct.
void send_string (const wchar_t * str) { printf("send_string : %s L:%i\n", str, wcslen(str)); ... for (p=str ; *p; p++) { ... inp[0].ki.wScan = inp[1].ki.wScan = *p; printf("wScan has %i\n", *p); SendInput(2, inp, sizeof(INPUT)); } } My xs file for this is just TYPEMAP: <<HERE const wchar_t * T_WCHAR INPUT T_WCHAR $var = ($type)SvPV_nolen($arg) OUTPUT T_WCHAR sv_setpv((SV*)$arg, $var); HERE void send_string(s) const wchar_t * s When I test this send_string function, I see that printf("%s", str) is correct the value return by wcslen(str) is not constant and is too large, it's herratic and varied from the same string value sent from perl the values in wScan are wrong except for the first character The INPUT and OUTPUT part of the typemap are copied from T_PV. I have tried more elaborate conversion taken from this thread http://grokbase.com/t/perl/xs/06bxe1krvk/t-wchar-final but the code does not compile. Thanks for any help. François