J'ai stockage des pointeurs de c dans Java via JNI en suivant les conseils de @tulskiy dans ce post Passing pointers between C and Java through JNIpassage des pointeurs entre C et Java via JNI
L'astuce est de jeter le pointeur comme jlong. Donc de c j'ai return (jlong) ptr;
Je retourne un jlong (toujours 64 bits) parce que je veux que mon code fonctionne à la fois sur les systèmes 64 et 32 bits. La taille en mémoire d'un pointeur 64 bits sur un ordinateur 64 bits est 64 et il s'ensuit que sur un ordinateur 32 bits, la taille du pointeur en mémoire est de 32 bits. Le problème est que sur la machine 32 bits, j'obtiens un message d'avertissement du compilateur disant "conversion en entier d'un pointeur de taille différente." Les avertissements disparaissent si j'ai return (jlong) (int32_t) ptr;
Cependant, ce code n'est pas bon pour la machine 64 bits.
Je voudrais que mon code compile sans avertissements de sorte que s'il y a un avertissement légitime, je le verrai. Quelqu'un a des idées?
Merci, Ben