2013-06-05 4 views
0

J'ai une bibliothèque partagée C qui attend unsigned char * comme l'un des paramatersjavascript ctypes Chaîne à unsigned char

Quelle est la meilleure façon d'obtenir une chaîne Javascript pour être un unsigned char *?

Dans mon fichier js, j'ai le paramater déclaré comme ctypes.unsigned_char.ptr, mais il ne sera pas owrk juste passer la chaîne javascript comme paramètres que

Tout cela se fait dans le cadre d'un extension firefox. Voici ma déclaration de la fonction

var myfunction = mylib.declare("function", 
          ctypes.default_abi, 
          ctypes.int, 
          ctypes.unsigned_char.ptr, 
          ctypes.long); 

Où mylib est le var j'ai chargé la lib partagée avec le module ctypes.

+0

Comment obtenez-vous les données javascript dans le programme c? – Magn3s1um

+0

Il s'agit d'une extension firefox, j'utilise donc le module ctype et je charge la lib libérée. ..will poster un edit avec la déclaration – Derek

+0

Quand vous dites "il ne sera pas nécessaire de simplement passer la chaîne javascript en tant que paramètres", que voulez-vous dire? Alors que JavaScript utilise en interne UCS-2 * ou * UTF-16, en pratique, la plupart utilisent UTF-16. Je n'ai eu aucun problème à passer les chaînes JavaScript à des bibliothèques qui veulent du code ASCII pur en les déclarant comme 'ctypes.char.ptr'. Y a-t-il un caractère spécifique que vous essayez de transmettre qui ne fonctionne pas? Essayez-vous de transmettre des données binaires stockées dans des tableaux typés? Recevez-vous un message d'erreur spécifique?!? –

Répondre

1

Voici should work:

  • Déclarez l'argument comme ctypes.uint8_t. Passez l'argument en tant que ctypes.uint8_t.ptr(new Uint8Array(...)).
Questions connexes