Lancer un prog C avec paramètres [Debutant] - C - Programmation
Marsh Posté le 25-08-2005 à 10:46:25
Et comment c1 te retourne le tableau de doubles ? Sur la sortie standard ?
Soit tu appelles un programme externe avec system() ou l'une des fonctions exec() qui va bien, et tu épluches ce que sort le dit programme...
... soit tu appelles directement les fonctions de la DLL qui te sont utiles. C'est le but des bibliothèques partagées que d'être utilisées par n programmes.
Marsh Posté le 25-08-2005 à 11:12:45
Elmoricq a écrit : Et comment c1 te retourne le tableau de doubles ? Sur la sortie standard ? |
bah c1 pour le moment me retourne rien mais je suppose qu'il me suffit de claquer un ptit "return" et ça fonctionne...
heu exemple pour system je fait : system(exemple.c(param1,param2)) ??
Appeler directement les fonctions de la DLL qui me sont utiles ça m'intéresse, tu as un exemple de prog qui fait ça ?
Parceque le prob c'est qu'à l'origine je suis en java et avec JNI je fais du C seulement quand je compile ce qu'il faut il crée une DLL un .h associé au programme C contenu dans mon code java, on peut donc associé 2 dll à un seul code C ??
Si oui un exemple Svp jsui vraiment en lutte!
Marsh Posté le 25-08-2005 à 11:15:17
fguitch a écrit : bah c1 pour le moment me retourne rien mais je suppose qu'il me suffit de claquer un ptit "return" et ça fonctionne... |
int main() { return un_int; }
Marsh Posté le 25-08-2005 à 11:22:59
fguitch a écrit : bah c1 pour le moment me retourne rien mais je suppose qu'il me suffit de claquer un ptit "return" et ça fonctionne... |
return d'un tableau de pointeur sur quel flux ?
Pas possible, soit tu passes par un fichier, soit tu passes par la sortie standard, mais tu ne peux pas passer des variables ou des bouts de mémoire d'un programme à un autre. Enfin pas comme ça en tout cas.
Citation : heu exemple pour system je fait : system(exemple.c(param1,param2)) ?? |
system() :
#include <stdlib.h> |
Il te faut donc une chaîne de caractères en paramètre de system(). En gros cette chaîne doit contenir l'appel au programme externe exactement de la même façon que celle que tu utiliserais pour le lancer en ligne de commande.
Exemple : "c param1 param2"
Citation : Appeler directement les fonctions de la DLL qui me sont utiles ça m'intéresse, tu as un exemple de prog qui fait ça ? |
Ben... ton premier programme c, celui que tu appelles c1 ?
Citation : on peut donc associé 2 dll à un seul code C ?? |
Autant que tu veux, une DLL c'est une bibliothèque de fonctions partagées.
Citation : Si oui un exemple Svp jsui vraiment en lutte! |
Tu utilises #include pour inclure le fichier .h correspondant à la DLL que tu souhaites utiliser, et tu inclues la DLL dans le projet (j'imagine que tu utilises VC ou un truc du genre ?)
Marsh Posté le 25-08-2005 à 11:49:30
Bon pour éviter de me prendre la tete avec 2 programmes C, si je peux utiliser tout dans un seul programme ça me va très bien !
Le principe de JNI c'est de créer une méthode dite "native"
ensuite on génère le fichier d'entete des fonctions h1 avec des noms à la java
et ensuite on fait le DLL avec les fonctions. dll1
Donc tu crois que c'est jouable d'utiliser la dll qui existe déja (dll2) ?
Marsh Posté le 25-08-2005 à 16:28:13
Il doit bien avoir de la memoire partagee sous win, non ?
Marsh Posté le 26-08-2005 à 11:25:18
sous win me semble que le code des dlls n'est chargée qu'une fois, par contre les espaces de données sont privés au processus. On peut aussi déclarer des shared sections (donc un espace de données partagé)
Marsh Posté le 25-08-2005 à 10:38:39
Voila je vais essayer de faire simple parceque c'est compliqué
J'ai un header (h1), j'ai un programme C (c1) et j'ai une DLL (d1)
c1 utilise d1 et h1
Je n'ai pas les sources de la DLL mais j'ai ses méthodes et ses paramètres.
Je souhaite à partir d'un programme C (c2) que je fait moi meme, appeler c1 qui doit me retourner un tableau de double que je veux ensuite utiliser dans c2.
Le problème c'est que je n'y connait absolument rien au C et je n'ai aucune idée de comment faire...si quelqun peut me donner un exemple...merci