Un problème de notions d'objet : redefinition de fonctions [C++] - C++ - Programmation
Marsh Posté le 04-06-2003 à 09:49:45
C deux DLL ou une seule tes deux projets?
Marsh Posté le 04-06-2003 à 09:51:49
LetoII a écrit : C deux DLL ou une seule tes deux projets? |
Apparement, ca n'exporte qu'une dll : ImesInterface.dll
Marsh Posté le 04-06-2003 à 09:58:01
Ben, à mon avis, il n'y a QUE le projet ImesInterface qui est utilisé.
Et, fait voir la déclaration (ds le .h) de la méthode StarAcquire() stp...
Marsh Posté le 04-06-2003 à 10:01:41
Voila ce qu'il y a pour la fonction StartAcquire... C'est sur la définition de la fonction que le compilo pointe la redéfinition.
Voila...
Code :
|
Ca c'est la déclaration des fonctions, dans le meme fichier, en dehors des classes (d'ou leur appartenance au dossier globals)
Code :
|
Marsh Posté le 04-06-2003 à 11:16:08
c quoi ce "DM_ImageToken_1Ref" avant StartAcquire() ?
Ou est passé le "bool" de la déclaration de cette fonction ?
Marsh Posté le 04-06-2003 à 11:20:27
El_gringo a écrit : c quoi ce "DM_ImageToken_1Ref" avant StartAcquire() ? |
Comme je te l'ai dis, c'est pas moi qui ait programmé la base de cette dll...
DM_ImageToken_1Ref semble etre une référence à une image du logiciel (DigitalMicrograph = DM)
Il faut un bool ?
Marsh Posté le 04-06-2003 à 12:15:22
backdafuckup a écrit : |
Non, j'en sais rien. J'avais mal lu la déclaration, désolé.
Marsh Posté le 04-06-2003 à 14:14:29
ce que je comprends pas, c'est pourquoi il me dit que, à cause de mon appel, la fonction est redéfinie, mais différement... Alors qu'apparement, tout colle... Je commence à croire que la personne qui a programmé ca ne savait pas ce qu'elle faisait...
Marsh Posté le 04-06-2003 à 14:27:33
Au fait, dans la copie d'écran que tu as mis au début, tout ce code qu'on voit est dans "Imes.h" !???
Marsh Posté le 04-06-2003 à 14:28:52
El_gringo a écrit : Au fait, dans la copie d'écran que tu as mis au début, tout ce code qu'on voit est dans "Imes.h" !??? |
Oui, c'est le code de la classe MenuCaméra. Je ne sais pas pourquoi je l'ai mis la dès le départ, mais maintenant, dès que je le mets ailleurs (en faisant attention bien sur) j'ai 102 ou 103 erreurs de compilation !
la je suis en train d'essayer de recréer un nouveau projet en essayant de tout rassembler...
Marsh Posté le 04-06-2003 à 14:34:33
backdafuckup a écrit : |
Nan, mais attends; en principe, t'as un .h et un .cpp par classe.
Genre MenuCamera.cpp et MenuCamera.h
Dans un .h, t'es jamais censé mettre de code, mais uniquement les déclarations. C'est dans le .cpp que tu mets le code.
Marsh Posté le 04-06-2003 à 14:40:29
El_gringo a écrit : |
je sais, et c'est pour cela que j'ai fait un menucamera.cpp et .h
Le seul problème est que je n'arrive pas à rassembler ces foutus projets.
Je te l'ai dit, ce projet a une architecture affreuse ! Et je n'ai rajouté qu'une seule classe !!!
Soit je n'ai aucune logique, soit je suis fou !!!
Marsh Posté le 04-06-2003 à 14:40:38
El_gringo a écrit : |
Tu peux mettre du code dans le .h, ca permet de faire des fonction inline de façon implicite (et puis pour les templates t'as pas trop le choix ).
Marsh Posté le 04-06-2003 à 14:53:19
Comment fait on pour ajouter des fichiers dans "external dependencies" ?
Marsh Posté le 04-06-2003 à 14:56:40
backdafuckup a écrit : Comment fait on pour ajouter des fichiers dans "external dependencies" ? |
T'as pas à en rajouter, justement, ça référence les fichiers qui ne sont pas à proprement parler DANS le projet, mais qui sont utilisé par celui-ci quand même.
Marsh Posté le 04-06-2003 à 14:57:38
Bon, en fait j'ai réussi à ajouter des fichiers dans external dependencies.
Mais je n'arrive pas refaire un projet.
Je n'ai jamais fait de dll, donc ca m'est difficile de concevoir du premier coup une telle chose.
De plus je n'ai pas le temps de me consacrer à la lecture d'un tel thème....
Il faut donc que je trouve une solution avec ce projet...
Marsh Posté le 04-06-2003 à 15:48:02
El_gringo a écrit : Ben, trouve... |
Vous n'avez vraiment aucune idée ???
Pourquoi le compilo dit il que les fonctions sont redéfinies ? C'est un doublen "include" ?
Marsh Posté le 04-06-2003 à 16:06:34
backdafuckup a écrit : |
Pour éviter les risques de double include, tu fais:
Code :
|
Marsh Posté le 05-06-2003 à 09:40:54
El_gringo a écrit :
|
comme d'hab, on rappelle que mettre le nom du fichier _H, c'est bien beau, mais c'est rarement suffisant.
Il vaut mieux faire une jolie décoration style :
MONNOM_LADATE_LEPROJET_LEFICHIER_H pour être sur de ne jamais tomber sur quelqu'un qui aurait fait le même define ...
Edit : faute de frappe
Marsh Posté le 05-06-2003 à 09:50:20
Alors je ne sais pas ce que j'ai fait, mais j'ai une autre erreur.. qui m'inquiete plus :
Voila, apparement il me fait une fatal_error sur la ligne
Code :
|
ou un truc du genre...
Apparement ma version de librairie serait trop vieille ou trop récente... Pourtant je ne l'ai pas changée...
Marsh Posté le 04-06-2003 à 09:47:48
Voila, une application (une dll, extension d'un programme) a été divisée (pas par moi, mais par quelqu'un qui programme comme un porc) en deux projets : Imes et ImesInterface.
J'ai créé une classe MenuCamera que j'ai placé dans le projet Imes (ailleurs, ca me faisait 102 erreurs...). Cette classe s'ajoute automatiquement au projet ImesInterface.
Maintenant, j'aimerais appeler la fonction StartAcquire() (en bas à gauche du screenshot). On m'a déjà dit qu'il fallait l'utiliser ainsi : ::StartAcquire(0);
Or, voyez les erreurs de compilation que cela me donne....
Comment faire, donc, pour me permettre d'utiliser ces fonctions. Doisje déplacer ma classe MenuCamera ? Y a t'il quelque chose que je n'ai pas compris ? merci...
Message édité par backdafuckup le 04-06-2003 à 09:48:16