J'ai un cas de test où Java appelle une routine simple en C avec un couple d'args et il renvoie une chaîne et cela fonctionne. Cependant, lorsque j'ai codé mon code réel de la même manière, il se bloque avec une "Exception de cible d'invocation". Je l'ai ensuite simplifié à juste un appel et le retour d'une chaîne et il se bloque toujours. Une différence entre les deux cas est que l'un des appels a 6 arguments en virgule flottante, et l'autre 14 ars flottants. Le 6-arg est appelé en premier (une configuration) et je reçois l'exception.Crash Android natif de code
Existe-t-il une limitation pratique sur le nombre d'arguments qui peuvent être dans un appel au code natif? Ou devrais-je continuer à regarder mon code pour le problème ailleurs?
Désolé - Je n'ai pas pu convertir le logcat en commentaire, je le publie donc en tant que modification. Voici le logcat, toute suggestion où je devrais regarder? Que signifie "Aucune implémentation trouvée"?
D/dalvikvm( 531): Added shared lib /data/data/com.kinyur.etold/lib/libgalib.so 0x405133e0
D/dalvikvm( 531): No JNI_OnLoad found in /data/data/com.kinyur.etold/lib/libgalib.so 0x405133e0, skipping init
W/dalvikvm( 531): No implementation found for native Lcom/kinyur/etold/NativeLib;.setup (FFFFFF)Ljava/lang/String;
D/AndroidRuntime( 531): Shutting down VM
W/dalvikvm( 531): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime( 531): FATAL EXCEPTION: main
La routine est appelée avec 6 flottants et renvoie un type de chaîne. Et le "setup" est le nom de la routine que j'ai appelé quand il s'est écrasé.
Pourriez-vous poster votre prototype de fonction native, le prototype java correspondant, et une invocation exemple où il échoue? Les entrées de logcat pertinentes seraient également utiles. – JesusFreke
14 arguments @ _ @ refactor? – Xorlev
Merci de m'avoir assuré que le problème n'est pas les limitations d'arg. Je vais y passer une autre journée avant de crier pour plus d'aide - si je peux le trouver, ça vous fera gagner du temps. J'ai couru logcat et vu cela, peut-être que vous pourriez me donner un pointeur où chercher? –