Je suis en train d'écrire une extension native pour Adobe AIR en C. Le code devrait être porté sur d'autres plates-formes plus tard. Dans ma fonction du côté C, je reçois une chaîne de caractères de air comme ceci
uint32_t len;
const uint8_t * str = 0;
if( FRE_OK == FREGetObjectAsUTF8(argv[0], &len, &str) )
{
// Ici, je dois passer une chaîne de caractères en argument à une autre fonction
printf("Chaîne obtenue %s", str); // Affiche des caractères bizarres au lieu de str
}
FREGetObjectAsUTF8 renvoie une chaîne encodée en UTF8 qui devrait être représentée comme const uint8_t. Je travaille sur MacOS et XCode et uint8_t est défini comme unsigned char. Le problème se situe dans un ensemble de code C qui attend un simple char* en tant qu'argument. Je n'ai pas besoin de caractères unicode et n'utilise que des lettres latines et des chiffres.
J'ai essayé de caster un type sans succès. Par exemple
char buffer[512];
sprintf(buffer, "%s", (char*)str); // Mêmes caractères bizarres ici
Mais si je parcours la chaîne de caractères, j'obtiens la valeur correcte
for(i=0; i
`
Donc ma question est : Comment puis-je passer une chaîne UTF8 à une fonction qui attend un simple char signé ? En fait, je pourrais essayer de créer des fonctions en C++ et d'utiliser la partie C avec "extern", mais une solution purement en C serait plus préférable.
Je passe la chaîne "initapp" depuis air et si je la renvoie à l'exécution, elle m'affiche la valeur correcte "initapp". Dans mon code C, j'essaie de la passer à une fonction qui attend char* en argument
FREObject initApp(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
uint32_t len;
const uint8_t * str = 0;
if( FRE_OK == FREGetObjectAsUTF8(argv[0], &len, &str) )
{
/*
J'ai environ 40 fonctions et la plupart d'entre elles travaillent avec des chaînes ASCII
*/
executeCommand( (const char*)str );
FREObject result;
FRENewObjectFromUTF8(len, str, &result);
return result; // C'est correct. Chaîne correcte
}
return NULL;
}
Mais dans ma fonction, au lieu de "initapp", j'obtiens plusieurs caractères bizarres (différents à chaque fois) comme si j'essayais de sortir une partie d'une image ou une variable incorrecte.
Toute aide sera grandement appréciée.
`