Bonjour à tous,
j'ai un problème qui me bloque depuis plusieurs jours et dont je ne comprends pas l'origine.
Je bosse actuellement sous linux. (Suse)
J'ai une librairie statique que je compile (en résumant) via :
g++ -c MesSources -I./MesPathsInclude -W -Werror -Wall -pedantic etc...
ar rcs libMaLib.a MesObjets
avec :
MesObjets = $(MesSources:.cc=.o)
La compile se passe bien, ma lib sort. Bref, à priori, pas de problème.
Dans un deuxième temps, je souhaite maintenant me servir de ma lib. Je crée donc un petit main tout simple du type :
#include "UnObjetDeMaLib.hh"
#include <string>
int main(int /*argc*/, char **/*argv*/)
{
monNamespace::UnObjetDeMaLib lObjet;
std::cout << lObjet.print() << std::endl;
return (0);
}
Puis je fais un makefile avec comme lignes de commande (en résumé à nouveau) :
g++ -c main.cc -I./MesPathsInclude -W -Werror -Wall -pedantic etc...
g++ -oMonExe MesObjets -L./MesPathLib -lMaLib
Et là... Ô rage, ô désespoir, il se met à me sortir plein d'erreur de link au sein de la librairie du style:
unFichierDeMaLib.cc.text+0xaaaa): undefined reference to `monNamespace::UnAutreObjetDeMaLib::UneMethode()'
Ce qui est troublant car, les problèmes de liens n'ont pas l'air d'avoir lieu entre mon main et ma lib, mais en interne dans la lib.
Quelqu'un a-t-il une explication ? Est-ce que je compile mal la lib ? L'exe ?
(Pour info, j'ai déjà essayé le ranlib, ce n'est donc pas ça le problème)
Merci d'avance
Message édité par Linbeg le 25-07-2011 à 13:18:23