Créer une librairie indépendante

Résolu
bobygus Messages postés 4 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 25 septembre 2007 - 7 sept. 2004 à 16:37
bobygus Messages postés 4 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 25 septembre 2007 - 8 sept. 2004 à 12:00
Bonjour alors, voici mon problème: (avec Visual C++.NET)
J'ai une carte d'acquisition qui pilote un automate.
La librairie de la carte d'acqu. (DAQlib.lib) est fournie par le fabricant.
J'ai créé ma propre librairie (motorlib.lib) qui comporte des fonctions spécifiques à mon système, celles-ci utilisant les fonctions de DAQlib.
Ainsi, j'envisageais d'utiliser mes fonctions dans un gros projet d'application, en incluant motorlib sans que ce projet dépende de DAQlib.

Seulement, dans ce projet, aprés avoir inclu la motorlib, aprés compilation, j'ai des erreurs : je dois aussi inclure DAQlib.lib...Donc finalement, autant incorporer mes fichiers .c de motorlib dans le projet directement (ce qui fait moins "propre"car ce projet est déja bien fourni en fichier ".c").

Voilà, donc, déja, est ce que ce que je cherche à faire est possible, et si oui, qu'est ce que j'ai oublié de faire ou de sélectionner dans les pages de propriétés de mon projet "motorlib"??

Merci d'avance pour votre aide, à bientot :)

4 réponses

NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
7 sept. 2004 à 21:16
Personellement, je te conseil simplement de lier les deux libs dont tu as besoin ... Sinon, tu pourais aussi charger le tout dynamiquement mais ca serait plus chiant.

Et c'est tout à fait normal de lier DAQlib.lib étant donné que motorlib.lib l'utilise

#pragma comment(lib, "DAQlib.lib")
#pragma comment(lib, "motorlib.lib")

#include "motorlib.h"
#include "DAQlib.h"
/* ... */

et le code ensuite, très simple et propre ...

~(.:: NitRic ::.)~
3
bobygus Messages postés 4 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 25 septembre 2007
8 sept. 2004 à 10:40
merci Nitric pour ta réponse.

Bon, finalement, j'avais trouvé une autre méthode hier soir : dans motorlib.h, j'avais oublié de mettre :

#ifdef __cplusplus
extern "C"
{
#endif

//déclaration de mes_fonctions();...

#ifdef __cplusplus
}
#endif

Du coup, avec ça, j'ai résolu mon problème car finalement, motorlib.lib est maintenant indépendant puisqu'il englobe DAQlib.lib. Je n'ai donc plus besoin d'inclure DAQlib...

J'ai d'autres questions, maintenant :
-Est il possible maintenant de faire que motorlib contienne uniquement les parties de DAQlib utilisées, afin de réduire la taille du fichier motorib.lib???

-Les directives "#pragma comment(lib, "motorlib.lib")" reviennent elles au meme que de faire la manipulation suivante avec visual : aller dans les propriétés du projet -> éditeur de liens -> entrée -> Dépendances supplémentaires : ajouter motorlib.lib ?

Merci à vous, bonne journée!
3
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
8 sept. 2004 à 11:24
#pragma te permet de modifier, ajouter, retirer, ... certaines directives ou autre au compilateur/linker tout comme si tu le ferais manuellement via ton IDE, donc, oui ca revient au même.

Pour ce qui est de tes librairies/linker, voici un petit pdf assez court qui va t'en dire long sur le sujet;
http://lionne.cnam.fr/Cours/an03/SIA03/systeme/cours3.pdf

~(.:: NitRic ::.)~
3
bobygus Messages postés 4 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 25 septembre 2007
8 sept. 2004 à 12:00
Merci beaucoup, maintenant tout est un peu plus clair dans ma tete!!
à plus, bye
0
Rejoignez-nous