Mets le tout en GPL et tu pourras bénéficier de l'aide de la communauté ! :-)
C'est deja fait, y'a meme une page sur freshmeat : http://freshmeat.net/projects/pptools/(...)
Bon, donc voila le code des fonctions liées a inductance::f()
double inductance::f(void) {
//this function is a wrapper needed by the solver
switch(type) {
case ParalleleWires:
return parameters[5]-parallele_wires();
break;
case CoaxialLine:
return parameters[5]-coaxial_line();
break;
case StripLine:
return parameters[5]-strip_line();
break;
case ConvergingLine:
return parameters[5]-converging_line();
break;
case Disks:
return parameters[5]-disks();
break;
case RectangularCoil:
return parameters[5]-rectangular_coil();
break;
case Helix:
return parameters[5]-helix();
break;
}
return (double)EXIT_FAILURE;
}
Mais le pire, c'est que si je met un printf("Ici\n") au debut de la fonction "f()", rien ne s'affiche (c'est a dire que je n'entre meme pas dans la fonction !). Enfin, oui, je confirme, c'est bien d'un segfault qu'il s'agit...
Juste une chose, ne pas le mettre sur un FTP publique ou autre, je n'aime pas vraiment faire des releases qui segfault des que l'on clique.... ;-) (eh oui, on a sa fiertée...)
Ce qui provoque le bug, c'est dans l'onglet "inductance", apres avoir remplit les champs, lorsque l'on clique sur "solve", ça plante immédiatement (mais pas sur mon PPC...)
[^] # Re: Segfault ?
Posté par Mathias Bavay (site web personnel) . En réponse au message problème d'acces à une méthode. Évalué à 2.
C'est deja fait, y'a meme une page sur freshmeat : http://freshmeat.net/projects/pptools/(...)
Bon, donc voila le code des fonctions liées a inductance::f()
double inductance::f(void) {
//this function is a wrapper needed by the solver
switch(type) {
case ParalleleWires:
return parameters[5]-parallele_wires();
break;
case CoaxialLine:
return parameters[5]-coaxial_line();
break;
case StripLine:
return parameters[5]-strip_line();
break;
case ConvergingLine:
return parameters[5]-converging_line();
break;
case Disks:
return parameters[5]-disks();
break;
case RectangularCoil:
return parameters[5]-rectangular_coil();
break;
case Helix:
return parameters[5]-helix();
break;
}
return (double)EXIT_FAILURE;
}
et un exemple de fonction appelée:
double inductance::parallele_wires(void) {
double length,gap,a,p;
a=parameters[1];
gap=parameters[2];
length=parameters[3];
p=sqrt(0.25*gap*gap-a*a);
L=-MU_0/PI*length*(log(gap/a)+log(0.5-p/gap));
return L;
}
Mais le pire, c'est que si je met un printf("Ici\n") au debut de la fonction "f()", rien ne s'affiche (c'est a dire que je n'entre meme pas dans la fonction !). Enfin, oui, je confirme, c'est bien d'un segfault qu'il s'agit...
Pour ceux qui veulent jetter un oeil au source complet (dans sa version recente avec ce super bug), il est telechargeable (en l'etat) sur http://www.ivanhoe-technologies.com/products/pptools/src/pptools_0.(...)
Juste une chose, ne pas le mettre sur un FTP publique ou autre, je n'aime pas vraiment faire des releases qui segfault des que l'on clique.... ;-) (eh oui, on a sa fiertée...)
Ce qui provoque le bug, c'est dans l'onglet "inductance", apres avoir remplit les champs, lorsque l'on clique sur "solve", ça plante immédiatement (mais pas sur mon PPC...)
Mathias