Je m'appelle Maxime et je suis étudiant au CEGEP en informatique.
Je c'est programmer en C++ depuis maintenant 2 ans.
Mais la, j'ai un genre de petit "problème" que j'aimerais résoudre. Je voudrais savoir comment on crée notre propre bibliothèque? (J'ai Visuel Studio.NET). Car je c'est que nous pouvons en crée nous autre même en fait un fichier .h et un fhcier .cpp et puis on l'inclue #include"fichier.h" .
Mais moi j'aimerais crée une vrai bibliothèque afin de le distribuer gratuitement sur internet et lorsqu'on l'inclue on écrive #include<fichier.h> ou #include<fichiers>.
Et tu fais ton .cpp et ton .h , tu fais connaitre ta librairie mais lieu de mettre tes .cpp et .h dans le même répertoire que leur projet, les utilisateurs le mettrons dans les répertoires de l'IDE. Par contre je sais pas s'il y en a un precis, c'est toi qui devra leur expliquer.
Héhé moi j'avais posté un topic sur le forum ils m'ont tout expliqué! En fait, tu fais tes fichiers .cpp et .h. ensuite, tu généres un .o à partir du .c, et tu l'archives dans un .a! (avec gcc en ligne de commande:
gcc fichiers.c -c
ar -r bibliothèque.a fichiers.o
Après, avec un IDE, c'est encore plus simple: tu fais un projet de type static library, puis tu compiles: le .a apparait!
àa c'est pour les .a.
après, pour les dll, cherches sur msdn
Joyeux Noël: <lien url="http://support.microsoft.com/default.aspx?scid=kb;fr;815065">là</lien>
pff méchant ; dans le lien ça marche pas!
Tu inclue une bibliothèque standard. Et toi si tu crée une bibliothèque, elle n'est pas standard. Donc la syntaxe :
#include "library.h"
Est obligatoire pour tes projets.
Conçernant la création de DLLs, je rejoins WhiteTiGer : tu devrais avoir une option dans Visual Studio .NET.
Tu croi vraiment que toutes les librairies sont standard? On peut facilement mettre les notres dedans Tu n'as qu'a trouver un moyen (projet static library ) de faire un .a (ou .lib) mettres le header dans /include du compilateur et le .a dans libs et c'est tout. Par exemple: la SDL. Elle n'est pas standard mais on inclus avec #include <SDL/SDL.h>.
Sinon une question:
Comment on peut utiliser les fonction que l'on a mis dans un .dll
Exemple:
j'ai créer une fonction test() dans la .dll test. Via mon .exe je veut lancer cette fonction, il y a une manip à faire ou c'est automatiquement détecté (ça m'étonnerais ^^)
Je vous remercie de toute vos réponse. Je viens d'essayer et cela a fonctionner
Par contre j'ai due crée le .a avec Dev C++ car avec Visual Studio (version francaise) je n'est pas réussie. J'aimerais savoir si c'est possible de crée un .a avec Visual Studio.net
Tu ne peut pas faire de .a dans Visual Studio tout simplement parce que les fichiers .a sont propre au compilateur GCC (ou MinGW). Avec Visual Studio tu créé un équivalent qui se termine par .lib.
Pour les DLL se sont simplement ce qu'on appelle des librairies dynamiques. En fait tu peux avoir deux types de librairie :
- les librairies statiques : tout le code de la librairie est inclus dans ton programme
- les librairies dynamiques : le code de la librairie est chargé dans ton programme quand tu double-clique dessus et ce code est stocké dans un fichier .dll (.so sous Linux)
Tu inclue une bibliothèque standard. Et toi si tu crée une bibliothèque, elle n'est pas standard. Donc la syntaxe :
#include "library.h"
Est obligatoire pour tes projets.
Conçernant la création de DLLs, je rejoins WhiteTiGer : tu devrais avoir une option dans Visual Studio .NET.
Tu croi vraiment que toutes les librairies sont standard? On peut facilement mettre les notres dedans Tu n'as qu'a trouver un moyen (projet static library ) de faire un .a (ou .lib) mettres le header dans /include du compilateur et le .a dans libs et c'est tout. Par exemple: la SDL. Elle n'est pas standard mais on inclus avec #include <SDL/SDL.h>.
Sinon une question:
Comment on peut utiliser les fonction que l'on a mis dans un .dll
Exemple:
j'ai créer une fonction test() dans la .dll test. Via mon .exe je veut lancer cette fonction, il y a une manip à faire ou c'est automatiquement détecté (ça m'étonnerais ^^)
oui mais non, c'est une convention (je crois) de ne mettre QUE les librairies standars enre <>
Sinon pour appeller une fonction depuis une dll sous windows, <lien url="http://support.microsoft.com/default.aspx?scid=kb;fr;815065">http://support.microsoft.com/default.aspx?scid=kb;fr;815065</lien> , faut mettre un truc du genre __declspec(dllimport) dans ton .h avant le type de la fonction (void, int...)
Sinon une question:
Comment on peut utiliser les fonction que l'on a mis dans un .dll
Exemple:
j'ai créer une fonction test() dans la .dll test. Via mon .exe je veut lancer cette fonction, il y a une manip à faire ou c'est automatiquement détecté (ça m'étonnerais ^^)
oui mais non, c'est une convention (je crois) de ne mettre QUE les librairies standars enre <>
Sinon pour appeller une fonction depuis une dll sous windows, <lien url="http://support.microsoft.com/default.aspx?scid=kb;fr;815065">http://support.microsoft.com/default.aspx?scid=kb;fr;815065</lien> , faut mettre un truc du genre __declspec(dllimport) dans ton .h avant le type de la fonction (void, int...)
C'est pas comme ça qu'on utilise une bibliothèque dynamique (à moins que ton programme ne sache pas à l'avance les dll dont il a besoin comme pour l'interprétateur Python).
Normalement une fois que tu as compilé ta bibliothèque (en mode 'Dynamic Library' sous CodeBlock) tu devrais avoir dans le dossier du projet deux fichiers, par exemple si ton projet s'appelle test tu auras un fichier libtest.a et un fichier test.dll. donc pour utiliser ta bibliothèque il te suffit de taper du code qui l'utilise dans un autre projet et de rajouter le fichier libtest.a au linker. Ensuite tu distribue ton application avec la dll test.dll. Fait un essais en ouvrant le template 'Dynamic Library' de Code::Blocks et compile.
Dans le fichier de prototype .h que tu aura pris soin d'écrire avant puisque tu l'utilise dans ta bibliothèque ;-), c'est comme pour un projet normal où tu sépare la déclaration des fonctions et leur implémentation (par contre c'est vrai que dans l'exemple de Code::Blocks il n'y a pas de fichier .h)
Oui ça d'accord, n'empêche que tu dois mettre dans le fichier .h le truc __declspec(dllimport) (ou dllexport), sinon il saura pas qu'il faut chercher dans la dll...
j'ai essayer de trouver comment du comment faire une librairie statique ou dynamique, mais il n'apparait pas dans les projets disponibles.
J'ai microsoft Visual Studio.net 2003. Si quelqu'un pourrait me donner la marche à suivre pour ouvrir ce genre de projet svp
@RakyDia2 Bonjour, merci de ne pas squatter le sujet des autres et de ne pas déterrer d'ancien sujet résolu, créer votre propre sujet dans le respect des règles du forum à savoir qu'un message commence par des règles de politesses (Un bonjour ou des salutations à la communauté et se termine par des remerciements par avances pour les futures réponses), la description de votre problème et le code que vous avez écrit inséré sur le forum à l'aide de l'outil d'intégration de code soit le bouton code </>.
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
If you'd like to join us, read "How do we work at OpenClassrooms"! :)