Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1557 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Création, emploi de librairies statiques avec GCC [proprement résolu]

 


 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Création, emploi de librairies statiques avec GCC [proprement résolu]

n°486177
Ace17
Posté le 13-08-2003 à 17:35:10  profilanswer
 

- J'ai une librairie statique "Midi" qui est en fait un wrapper orienté objet des fonctions de windows de winmm d'acces au midi.
- J'ai une application "SightReader" qui utilise cette librairie.  
 
J'utilise Mingw32.
 
Pour créer ma librairie statique "Midi":
  * Je compile chaque fichier séparement, obtenant a chaque fois un .obj.  
  * Je fais "ar cr libMidi.a *.obj" et j'obtiens le fichier de librairie statique.  
 
Pour créer "SightReader" :
  * Je compile chaque fichier séparement, obtenant a chaque fois un .obj.  
  * Je fais  "g++ -o SightReader.exe -lmidi *.obj"
 
Il trouve bien "libmidi.a" car il ne me donne pas de message d'erreur ( j'ai omis pour des raisons de lisibilité de mettre le path des librairies, mais dans mon makefile il y est et il est correct )
 
Le probleme est qu'a la compilation de "SightReader" j'ai des erreur de linkage, du type :
"Main.obj(.text+0x42):Main.cpp: undefined reference to `midi::CShortMsg::GetData1() const' "
 
Si je ne précise pas -lmidi et que je prends les .obj de "Midi" et que je les met dans le dossier de "SightReader", car marche. Donc les noms des fonctions sont bons.
 
Si vous avez une idée...
 
edit : j'ai une erreur de linkage par fonction. Donc c'est bien un probleme de librairie et pas de code.


Message édité par Ace17 le 24-08-2003 à 15:56:02
mood
Publicité
Posté le 13-08-2003 à 17:35:10  profilanswer
 

n°486597
Taz
bisounours-codeur
Posté le 13-08-2003 à 23:51:12  profilanswer
 

-L.

n°486599
Ace17
Posté le 13-08-2003 à 23:53:15  profilanswer
 

Ben non... le path est correct. Quand il ne trouve pas la librairie il ne linke meme pas.

n°486601
Taz
bisounours-codeur
Posté le 13-08-2003 à 23:54:36  profilanswer
 

et le -shared ? -fpic ?
 
gcc -o libdawa.so -shared -fpic mon.c
gcc -L. -ldawa main.c

n°486611
Ace17
Posté le 14-08-2003 à 00:05:31  profilanswer
 

Le shared et le fpic a priori y'en a pas besoin, puisqu'il s'agit la d'une librairie statique. Enfin, arrete moi si je me trompe

n°486613
Taz
bisounours-codeur
Posté le 14-08-2003 à 00:06:28  profilanswer
 

je fais pas de bilitoheque statique  :o

n°486614
Ace17
Posté le 14-08-2003 à 00:09:18  profilanswer
 

lol fallait lire le titre  ;)  
merci quand meme  :hello:

n°486615
Taz
bisounours-codeur
Posté le 14-08-2003 à 00:10:00  profilanswer
 
n°486618
Ace17
Posté le 14-08-2003 à 00:17:02  profilanswer
 

Ben ouais tu penses bien que j'ai cherché avant de poster ;
Des exemples j'en ai plein et ce que je fais semble correspondre! Je vais continuer a chercher...

n°486844
Captain ad​-hoc
miam les bon batonnets de tux
Posté le 14-08-2003 à 09:59:33  profilanswer
 

T'as pas fait un "ranlib libtoto.a" ? en général c'est necessaire (ou "ar -s" )
 
essaye aussi de mettre /chemin/vers/libtoto.a plutot que -ltoto

mood
Publicité
Posté le 14-08-2003 à 09:59:33  profilanswer
 

n°487532
Ace17
Posté le 14-08-2003 à 17:35:18  profilanswer
 

J'ai essayé le ranlib... ca ne change rien  :cry:
J'ai changé le -lmidi en /chemin/vers/mon/fichier/libmidi.a
pas de résultat...

n°487555
Ace17
Posté le 14-08-2003 à 18:22:55  profilanswer
 

Bon ben finalement au lieu d'utiliser -lmidi j'ai ajouté la lib et son path entier dans les .obj ... et ca passe. Manifestement c'est la commande -l qui ne "marche pas"... Le mystere reste entier  :??:

n°495798
Ace17
Posté le 24-08-2003 à 15:55:35  profilanswer
 

J'ai enfin compris! Ca m'aura pris du temps mais pour éviter que d'autres tombent dans le meme piege ... les librairies doivent tout simplement se trouver apres les .o dans la ligne de commande...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Création, emploi de librairies statiques avec GCC [proprement résolu]

 

Sujets relatifs
Problème d'adaptation de script. (Résolu mais voir fin)problème de création de table
[PHP, MYSQL] [résolu]Comment optimiser ce code? (nombreux SELECT FROM)Besoin d'aide | Création autorun avec lien hypertexte
[linux] empêcher un programme de se lancer plusieurs fois : résolu[PHP] création automatique de pages
Système de couleurs personalisées avec JS compatible Mozilla [résolu]Comment afficher un panorama proprement et legerement...
[Résolu] Impossible d'exécuter des javascriptCréation d'un cookie
Plus de sujets relatifs à : Création, emploi de librairies statiques avec GCC [proprement résolu]


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR