Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment créer un librairie en C++

Sujet résolu
17 avril 2006 à 13:22:30

Bonjour à tous :)

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>.

Jespère avoir une aide :)

Maxime(pseudo:harry5)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
17 avril 2006 à 13:49:03

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.

PS : fais d'abord connaitre ta lib.

Voilà @+
  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2006 à 13:55:46

Cherche dans tes types de projets, tu devrais en avoir un nommé static library ou un truc dans le genre.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
17 avril 2006 à 15:43:50

Et si tu veux que les utilisateurs mettent:
#include <header.h>

Au lieu de:
#include "header.h"

Il suffit simplement que ton fichier d'en-tête soit placé dans le répertoire include de l'IDE...

Pour ce qui est de créer des '.lib' ou '.a', ça désolé je ne sais pas... :(
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
17 avril 2006 à 16:07:16

Quand tu décide d'écrire :
#include <iostream>

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.
  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2006 à 16:15:13

J'ai trouvé une page qui pourrait peut être t'aider. Elle t'indique comment crée des dll en C compatible avec VB.

Crée des dll [Lien]

Amicalement,

deLux
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
17 avril 2006 à 16:51:37

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!
  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2006 à 17:48:39

Citation : Metzgermeister

Quand tu décide d'écrire :

#include <iostream>


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 ^^)
  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2006 à 22:07:52

bonjour.

Je vous remercie de toute vos réponse. Je viens d'essayer et cela a fonctionner :D
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

merci d'avance

Maxime(harry5)
  • Partager sur Facebook
  • Partager sur Twitter
17 avril 2006 à 22:25:34

Non, car Visual c'est des .lib qu'il crée et non des .a
  • Partager sur Facebook
  • Partager sur Twitter

If you'd like to join us, read "How do we work at OpenClassrooms"! :)

17 avril 2006 à 22:25:36

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)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
18 avril 2006 à 8:21:02

Citation : Alcor

Citation : Metzgermeister

Quand tu décide d'écrire :

#include <iostream>


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...)
  • Partager sur Facebook
  • Partager sur Twitter
18 avril 2006 à 8:54:50

Citation : Ze moi

Citation : Alcor


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.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
18 avril 2006 à 9:07:35

Ha oui? et le prototype des fonctions il le trouve ?
Sinon c'est vrai qu'il faut linker, mais bon ça c'est dit dans le lien que j'ai donné...
  • Partager sur Facebook
  • Partager sur Twitter
18 avril 2006 à 9:34:28

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)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
18 avril 2006 à 9:47:23

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...
  • Partager sur Facebook
  • Partager sur Twitter
19 avril 2006 à 0:15:56

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 :)

merci d'avance :)

Maxime
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
19 avril 2006 à 7:56:40

T'es sûr que ça apparait pas? C'est pas normal, tous les autres le font, cherches des trucs comme dll ou lib
  • Partager sur Facebook
  • Partager sur Twitter
23 mai 2023 à 15:52:04

Moi j'aimerais que vous m'aidez à créer une bibliothèque avec les extensions .h et.c et me dire commebt les utiliser svp
  • Partager sur Facebook
  • Partager sur Twitter
23 mai 2023 à 16:10:49

@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 </>.

Déterrage

Citation des règles générales du forum :

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

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter