nanch07
Messages postés2Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention28 janvier 2003
-
27 janv. 2003 à 22:02
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 2004
-
28 janv. 2003 à 22:42
J'expose tout, voilà: dans une de mes classes je fais appel à une fonction externe en C ( de numerical recipes in C). Mais j'ai également besoin de cette fonction dans une autre classe.
extern "C" {
// fonctions de numerical recipes utilisees (a enlever)
void linbcg(unsigned long n, double b[], double x[], int itol, double tol, int itmax, int *iter, double *err);
double *sa=NULL;
unsigned long *ija=NULL;
}
vtkParamDeform.obj : error LNK2005: _ija already defined in TestParamDeform.obj
vtkParamDeform.obj : error LNK2005: _sa already defined in TestParamDeform.obj
J'aurai donc besoin d aide a ce niveau la...
Merci d avance
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 27 janv. 2003 à 23:30
extern "C" ou pas, il ne faut inclure qu'une seule fois l'IMPLEMENTATION (le corps) des fonctions par application (pour tout le programme)... sinon le LINKEUR se fache
Il est nécessaire par contre d'inclur dans chaque unité de compilation (.c et .cpp) les DECLARATIONs des fonctions .
Met les dans un .h et n'inclus que ça dans tes .cpp et .c ... sinon le compilateur se rebiffe
nanch07
Messages postés2Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention28 janvier 2003 28 janv. 2003 à 10:53
Premièrement je tiens a te remericer, j ai donc essaye de faire un header avec seulement la partie extern C, met j ai toujours un pb au moment du linkage avec cette fonction en C...
"error LNK2001: unresolved external symbol _linbcg"
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 28 janv. 2003 à 22:42
Désolé pour cette aide pas vraiment ciblée (je t'ai parlé de fonctions alors que le problème se situe vraissemblablement du coté des variables
mais je vois que tu avances... cool!
rappel :
un 'unresolved reference' signifie que le linkeur n'a pas trouvé le corps de ta fonction ou bien une definition de VARIABLE.
Pour une fonction, tu peux lui fournir dans un .cpp de ton programme ou bien linker avec le .LIB qui contient son implémentation.
Pour une variable, il faut DEFINIR une et une seule fois la variable dans le programme et seulement la DECLARER par la directive 'extern' dans les autres unités de compilation.
(le mot clef 'extern' seul , comme modificateur de type )
ici, apparemment , vu les premiers messages d'erreurs que tu a montré (> > > vtkParamDeform.obj : error LNK2005: _ija already defined in TestParamDeform.obj
> > > vtkParamDeform.obj : error LNK2005: _sa already defined in TestParamDeform.obj
il s'agit plutôt de variables