Faire une librairie a partir de plusieurs fichiers obj. Comment faire? - Programmation
Marsh Posté le 23-03-2002 à 20:39:05
Ace17 a écrit a écrit : Pour écrire une librairie, par exemple, le code source tient évidemment sur plusieurs fichiers . Mais pour la diffusion c'est pas pratique de fournir plusieurs .obj. Donc je voulais savoir comment je pourrais les regrouper un un seul. Je précise que je veux faire du linkage statique, bien sur. Et je ne veux pas que ce soit dépendant de l'OS. |
quand tu crees ton projet
(avec Visual C++ par ex)
tu specifies que tu veux creer une librairie
statique..
LEGREG
Marsh Posté le 23-03-2002 à 21:17:37
Ouais mais le truc qui me chiffone c'est que MSVC appelle ca une "Win32 static library"...C'est juste qu'ils s'approprient un format commun ou alors c'est vraiment spécifique a Win32?
Et puis je me souvenais avoir vu une commande pour regrouper des objs
[jfdsdjhfuetppo]--Message édité par Ace17--[/jfdsdjhfuetppo]
Marsh Posté le 23-03-2002 à 22:34:13
Ce qui transforme les fichiers objets
en librairie, executable ou dll
s'appelle l'edition des liens.
Lors de l'edition des liens, chaque
symbole utilise doit etre resolu.
(sinon erreur "unresolved external" ).
L'edition des liens est appele directement
depuis l'IDE de Visual mais tu peux evidemment
l'appeler a la main en ligne de commande si tu preferes.
Je crois que le format des librairies statique est
proprietaire
mais je pense que tu dois pouvoir trouver
des outils pour passer d'un format a l'autre.
(ou alors utiliser une dll)
A+
LEGREG
Marsh Posté le 24-03-2002 à 08:09:51
Merci des infos
Je vais expliquer ce que je veux faire ce sera plus simple :
En fait j'ai un pote avec qui on a décidé de programmer une base commune et chacun notre plugin. On voudrait que tout ca reste indépendant du systeme.
Le probleme c'est que les plugins appellent des fonctions de la base commune et la base commune appelle des fonctions des plugins... Donc c'est pas possible de résoudre tous les symboles, en fait l'idéal ca serait que la base commune se comporte comme un gros .obj et que chaque plugin soit un .obj .
Je précise que c'est un jeu - ce sera celui qui aura programmé le meilleur plugin (ils sont censé jouer le meme role) par rapport a la base commune c'est pourquoi en théorie une fois cette base compilée plus question de toucher a son code source.
[jfdsdjhfuetppo]--Message édité par Ace17--[/jfdsdjhfuetppo]
Marsh Posté le 24-03-2002 à 13:20:53
tu n'as pas l'air de connaitre
le mecanisme des fonctions virtuelles
ou des callbacks.
LEGREG
Marsh Posté le 24-03-2002 à 15:22:07
Si je connais mais je voudrais que ca reste simple!
Les callback c'est lourd a implémenter, de meme que les fonctions virtuelles!
Je me souviens juste avoir lu un jour quelque part un moyen de regrouper en un seul fichier obj plusieurs fichiers obj! Je m'étonne que personne ne connaisse ca.
Pourtant, du coté technique y'a rien qui interdit ce genre de trucs non?
[jfdsdjhfuetppo]--Message édité par Ace17--[/jfdsdjhfuetppo]
Marsh Posté le 24-03-2002 à 16:18:44
C'est possible, en tout cas sous Unix il n'y a pas de problème :
ar cru libtoto.a toto.o titi.o tutu.o ...
Marsh Posté le 24-03-2002 à 16:35:08
He ben voila!!
Merci bien
[jfdsdjhfuetppo]--Message édité par Ace17--[/jfdsdjhfuetppo]
Marsh Posté le 23-03-2002 à 09:41:11
Pour écrire une librairie, par exemple, le code source tient évidemment sur plusieurs fichiers . Mais pour la diffusion c'est pas pratique de fournir plusieurs .obj. Donc je voulais savoir comment je pourrais les regrouper un un seul.
Je précise que je veux faire du linkage statique, bien sur. Et je ne veux pas que ce soit dépendant de l'OS.
[jfdsdjhfuetppo]--Message édité par Ace17--[/jfdsdjhfuetppo]