Question de c/cpp

Page principale

Répondre à ce message
Auteur: Patrick Dupre
Date:  
À: guilde
Sujet: Question de c/cpp
Bonsoir,

J'utilise la numerical recipes 3
Il y un include
ludcmp.h
que j'utilise dans 4 routines,
2 fois dans 2 routines d'un meme fichier A.cpp
2 fois dans 2 routines d'un autre fichier B.cpp
Tout se passe bien si je lie 1 seul des 2 fichiers, cas A.o ou B.o
au programme principal.
Par contre le linkeur n'est pas contant si je lie les 2 objet A.o et B.o

Typîqueùent, je fais
#include <ludcmp.h>
dans A.cpp et B.cpp
et
    LUdcmp SOE (*par_soe -> mat) ;
    SOE.solve (*par_soe -> Lambda, rho) ;
dans les 4 routines


A.cpp:(.text+0x0): multiple definition of `LUdcmp::solve(NRvector<double> const&, NRvector<double>&)'; B.o:B.cpp:(.text+0x0): first defined here
/usr/bin/ld: A.o: in function `LUdcmp::solve(NRmatrix<double> const&, NRmatrix<double>&)':
A.cpp:(.text+0x3a0): multiple definition of `LUdcmp::solve(NRmatrix<double> const&, NRmatrix<double>&)'; B.o:B.cpp:(.text+0x3a0): first defined here
/usr/bin/ld: B.o: in function `LUdcmp::inverse(NRmatrix<double>&)':
B.cpp:(.text+0x540): multiple definition of `LUdcmp::inverse(NRmatrix<double>&)'; A.o:A.cpp:(.text+0x540): first defined here
/usr/bin/ld: B.o: in function `LUdcmp::det()':

Pourquoi ce conflit ?

Les varaibles SOE ont des adresse differents.
Pourquoi le function solve pose probleme ?

Est-ce qu'il y a une option a passer au linkeur ?
Suis-je condamne a faire un librairie dynamique ?
Ou bien je n'ai pas compris quelque chose ?

Merci.

===========================================================================
 Patrick DUPRÉ                                 | | email: pdupre@???
===========================================================================