Bonjour
J’ai un étrange problème que je ne sais pas résoudre.
Je suis ingénieur retraité, et, sans être informaticien de formation, ai beaucoup fait de calculs en Fortran et Excel VBA.
Depuis une douzaine d’années, je m’intéresse aux compétitions de courses virtuelles à la voile chez Virtual Regatta.
Et j’ai développé un routeur, donc un gros programme permettant, à partir des vents prévus sur le site météo américain NOAA et de divers fichiers (profils des côtes, polaires des voiliers … ) de calculer la meilleure route possible pour le voilier.
Ce routeur est basiquement en Excel VBA 64 bits, avec appel à des routines de calcul dans une dll écrite en Visual Studio C++ 64 bits dès qu’une partie des calculs devient très lourde.
Comme je n’ai pas envie de passer du temps à apprendre les subtilités de C++, tout est basique. Pas de New, re Redim, … Tous les tableaux sont donc définis en dimensions fixes, sans aucune subtilité.
Avec la même philosophie en VBA.
J’ai deux ordinateur, un assez gros fixe, vieux i7, 16Go de mémoire, et un vieux portable, i3, 6 Go.
Et depuis quelques temps, j’ai des plantages en débug C++ sur une ligne qui ne présente aucune difficulté : « void __stdcall CopieVentsEC(int & Prévision, double & Latitude, double & Longitude, double & Direction, double & vitVentNd) »
Une exception non gérée a été levée : violation d'accès en lecture Longitude a été nullptr
Prévision et Latitude sont transmises correctement, pas les trois autres arguments.
La ligne d’appel en VBA est simple :
Call CopieVentsEC(Prévision - 1, Latitude, Longitude, VentDirection, VentVitesse)
Et sa définition me semble correcte :
Declare PtrSafe Sub CopieVentsEC _
Lib "G:\MesFichiers\VirtualRegatta\_C++\_RoutageC93\_RoutageC\x64\Debug\_RoutageC.dll" _
(Prévision As Long, Latitude As Double, Longitude As Double, VentDirection As Double, VentVitesse As Double)
Mais le plus étonnant est que, si je copie sans la moindre modif les fichiers du fixe qui plante vers le mobile, le programme y fonctionne parfaitement.
Sur le fixe, j’ai donc :
- Gonflé la mémoire à 16 Go,
- Totalement réinstallé W10 en écrasant tout, avec toutes les mises à jour
- Réinstallé Office 2010, donc Excel
- Réinstallé Visual Studio C++ 2022, à jour
- Créé un projet neuf dans lequel j’ai inclus mes fichiers sources .cpp et .def
Bref, j’ai fait tout ce qui me semblait faisable.
Et ça plante toujours, et seulement sur le fixe.
Si quelqu’un a une idée ???
Merci.
P.S. Office et Visual Studio sont en 64 bits.