我有一个耦合的代码(fortran和c++),我现在用python调用它。这个main.exe文件工作正常,但是当我在python中调用耦合版本时,我得到了一个分段错误(core dumped)。我确定了产生问题的代码行,显然是由指针引起的。我的职责是:
void emissionPrimSR(pTSysRac sR)
{
/* Emission de nouveaux axes primaires sur le système racinaire */
pTAxe nouvAxe;
int numPrim, nbPrimAEmettre;
r3 vInit, dirInit;
double angRot,angI;
//printf("\n EMISSION PRIM SR : postest0=%lf, postest1=%lf,postest2=%lf\n",postest0, postest1, postest2);
nbPrimAEmettre = calcNouvNbPrim() - sR->nbPrim; /* Nombre de primaires à émettre */
printf("nombre Adv à emettre %d \n",nbPrimAEmettre);//---- TO DO SUPPRIME LLab
for ((numPrim=1); (numPrim<=nbPrimAEmettre); (numPrim++)) /* Pour les nouvelles primaires à émettre */
{
printf("Je suis dans emissionPrimSR %3i \n",sR->nbPrim);
/* Calcul de la direction initiale de l'axe */
if (sR->nbPrim==0) angI=tireGaussien(0.0,0.1); // émission de la radicule qui a un gravitropisme initial fort
else angI=tireGaussien(P_angInitMoyVertPrim,P_angInitETVertPrim); // angle par rapport à la verticale
vInit[0]=sin(angI);
vInit[1]=0.0;
vInit[2]=cos(angI);
angRot=sR->angDep+tireAngRad();
rotZ(vInit,dirInit,angRot);
/* Génération de l'axe et intégration dans le système racinaire */
nouvAxe=initialiseAxe(sR->nbAxeForm+1,P_diamMax,sR->origine,dirInit,NULL,NULL,postest0, postest1, postest2);
ajouteAxeSR(sR,nouvAxe);
sR->nbPrim++;
}
}
所以,这一行给出了一个分段错误:
nbPrimAEmettre = calcNouvNbPrim() - sR->nbPrim;
函数calcNouvNbPrim()如下所示:
int calcNouvNbPrim(void){
/* Calcul du nouveau nombre de primaires */
int nouvNbPrim;
// CB TEST printf("\n CALC NOUV NB PRIM - TEMPS = %d\n", temps);
nouvNbPrim=int (P_vitEmissionPrim*temps);
if (nouvNbPrim>=P_nbMaxPrim) nouvNbPrim=P_nbMaxPrim;
return nouvNbPrim;
} /* Fonction calcNouvNBPrim */
我做错什么了?你知道吗
运行gdb python
时,出现以下错误:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff1f7f2e6 in emissionPrimSR (sR=0x0) at src/ArchiSimple.cpp:1586
1586 nbPrimAEmettre = calcNouvNbPrim() - sR->nbPrim; /* Nombre de primaires � �mettre */`
解决方案:
<>我必须分离我的函数C++和FORTRAN,并在Python中分别调用它们。f90wrap无法处理ISO\u C\u绑定函数。你知道吗
解决方案:
<>我必须分离我的函数C++和FORTRAN,并在Python中分别调用它们。f90wrap无法处理ISO\u C\u绑定函数。你知道吗相关问题 更多 >
编程相关推荐