2015-03-19 1 views
0

J'ai une question concernant la mise en œuvre de JNI. J'ai compris le concept de la façon de l'implémenter en Java mais que se passe-t-il si vous ne connaissez rien à propos de la DLL, par exemple.Mise en œuvre JNI

Y at-il une chance de savoir quelle méthode implémenter si vous avez juste la DLL en tant que fichier? Quelque chose comme la réflexion en Java?

+0

dans le cas général - non, vous pouvez essayer différentes techniques de rétro-ingénierie, mais pas de méthode pare-balles évidentes –

Répondre

0

Si vous avez juste une DLL arbitraire et que vous voulez l'appeler de Java dont vous avez besoin:

  • de connaître les points d'entrée exportés par la DLL
  • d'écrire une ou plusieurs méthodes natives, et un ou plusieurs méthodes JNI correspondantes qui appellent les points d'entrée exportés.

Ce que vous ne pouvez pas faire est arbitraire appel à des fonctions exportées dans une DLL arbitraire directement à partir de Java via JNI. [Vous pourriez être en mesure de le gérer avec un certain JNA.]

0

Si vous avez un fichier Dll et que vous voulez l'utiliser, mais vous ne savez pas quelle méthode sont mises en œuvre, ce n'est pas un problème, mais le problème est que Dll le fichier n'est pas compilé pour l'interface java native (JNI). mais si Dll est créé pour jni, vous pouvez trouver sa méthode en utilisant dependency walker ou dll export ou en utilisant un autre utilitaire après avoir connu les méthodes que vous pouvez facilement utiliser dll créé pour jni.