Tout d'abord, je vous explique que je suis un pur d=E9butant en Java,
donc merci de ne pas vous affliger si ma question est simplissime ou
n'a aucun sens.
Voila, j'ai besoin =E0 partir d'une application Java d'utiliser, piloter
une classe C++ fournie par une DLL.
A ce que j'ai pu voir, je dois utiliser JNI. Cependant, celui-ci va me
permettre de faire des appel =E0 des fonctions C, compil=E9es avec un
compilateur C++, c'est =E0 dire utilisant les convention de nommage et
d'appel C++.
Par contre, je ne sais pas s'il est possible d'instancier et utiliser
des classes C++ directement via Java. La seule solution que je vois
est de passer par des fonctions C:
- une fonction create qui va instancier ma classe et me renvoyer un
int contenant l'adresse de l'objet cr=E9e
- autant de fonctions C que de m=E9thodes de la classe =E0 encapsuler.
Chaque m=E9thode prenant en param=E8tre l'int renvoy=E9 par la fonction
create ainsi que les m=EAmes param=E8tres que la fonction =E0 encapsuler
- une m=E9thode destroy prenant en param=E8tre l'int renvoy=E9 par la
fonction create
Cette fa=E7on de faire ne me satisfait pas vraiment: connaissez vous une
fa=E7on plus =E9l=E9gante de piloter des objets C++ via Java, pour pouvoir
faire quelque chose comme:
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrick
Bonjour à tous,
Tout d'abord, je vous explique que je suis un pur débutant en Java, donc merci de ne pas vous affliger si ma question est simplissime ou n'a aucun sens.
Voila, j'ai besoin à partir d'une application Java d'utiliser, piloter une classe C++ fournie par une DLL.
A ce que j'ai pu voir, je dois utiliser JNI. Cependant, celui-ci va me permettre de faire des appel à des fonctions C, compilées avec un compilateur C++, c'est à dire utilisant les convention de nommage et d'appel C++.
Par contre, je ne sais pas s'il est possible d'instancier et utiliser des classes C++ directement via Java.
Bonjour,
Tu devrais regarder du côté de SWIG (www.swig.org) qui permet de faire des choses plus sophistiquées que JNI et qui récupère pas mal de choses de C++ (sauf l'héritage multiple je crois).
-- Patrick
Bonjour à tous,
Tout d'abord, je vous explique que je suis un pur débutant en Java,
donc merci de ne pas vous affliger si ma question est simplissime ou
n'a aucun sens.
Voila, j'ai besoin à partir d'une application Java d'utiliser, piloter
une classe C++ fournie par une DLL.
A ce que j'ai pu voir, je dois utiliser JNI. Cependant, celui-ci va me
permettre de faire des appel à des fonctions C, compilées avec un
compilateur C++, c'est à dire utilisant les convention de nommage et
d'appel C++.
Par contre, je ne sais pas s'il est possible d'instancier et utiliser
des classes C++ directement via Java.
Bonjour,
Tu devrais regarder du côté de SWIG (www.swig.org) qui permet de faire
des choses plus sophistiquées que JNI et qui récupère pas mal de choses
de C++ (sauf l'héritage multiple je crois).
Tout d'abord, je vous explique que je suis un pur débutant en Java, donc merci de ne pas vous affliger si ma question est simplissime ou n'a aucun sens.
Voila, j'ai besoin à partir d'une application Java d'utiliser, piloter une classe C++ fournie par une DLL.
A ce que j'ai pu voir, je dois utiliser JNI. Cependant, celui-ci va me permettre de faire des appel à des fonctions C, compilées avec un compilateur C++, c'est à dire utilisant les convention de nommage et d'appel C++.
Par contre, je ne sais pas s'il est possible d'instancier et utiliser des classes C++ directement via Java.
Bonjour,
Tu devrais regarder du côté de SWIG (www.swig.org) qui permet de faire des choses plus sophistiquées que JNI et qui récupère pas mal de choses de C++ (sauf l'héritage multiple je crois).
-- Patrick
Olivier Scalbert
Patrick wrote:
Tu devrais regarder du côté de SWIG (www.swig.org) qui permet de faire des choses plus sophistiquées que JNI et qui récupère pas mal de choses de C++ (sauf l'héritage multiple je crois).
Effectivement, dans SWIG il y a un module qui peut créer une interface C (plate) sur base de classes C++. Je ne l'ai pas essayé avec des templates ou des exceptions mais normalement c'est aussi supporté ...
Olivier
Patrick wrote:
Tu devrais regarder du côté de SWIG (www.swig.org) qui permet de faire
des choses plus sophistiquées que JNI et qui récupère pas mal de choses
de C++ (sauf l'héritage multiple je crois).
Effectivement, dans SWIG il y a un module qui peut créer une interface C
(plate) sur base de classes C++. Je ne l'ai pas essayé avec des
templates ou des exceptions mais normalement c'est aussi supporté ...
Tu devrais regarder du côté de SWIG (www.swig.org) qui permet de faire des choses plus sophistiquées que JNI et qui récupère pas mal de choses de C++ (sauf l'héritage multiple je crois).
Effectivement, dans SWIG il y a un module qui peut créer une interface C (plate) sur base de classes C++. Je ne l'ai pas essayé avec des templates ou des exceptions mais normalement c'est aussi supporté ...