Compilation 64-bit avec gcc sous Windows

Compilation 64-bit avec gcc sous Windows - C++ - Programmation

Marsh Posté le 31-07-2007 à 13:08:12    

Salut les gens [:dawa]

 

J'ai une machine avec Windows 64. J'ai du code C++ avec des unsigned long un peu partout (et des sizeof(unsigned long) aussi [:petrus75]) ; la compil d'un pétÿ exécutable de test sous Visual Studio 2005 marche nickel. Et pour cause, les unsigned long 32 et 64 bit ont la même taille sous Windows.
Même code, sous FreeBSD sur AMD64 chez un client [:dawa] Là, pétage de gueule, sizeof(unsigned long) vaut 8 [:taiche] (contre 4 pour la version Ouinedoze)
N'ayant pas accès à un Unix quelconque sous 64-bit, j'aimerais pouvoir faire mon dev/test sous Ouinedoze 64-bit. Donc je chope gcc/g++ (la doc explique bien que sous 64-bit, un long est 64-bit avec gcc/g++, contrairement à Visual) via Cygwin, je tente la compil avec -m64 et... c'est le drame :

Citation :


sorry, unimplemented: 64-bit mode not compiled in


[:itm]
J'ai cherché tout ce que je pouvais pour avoir un gcc/g++ qui me fasse du putain de code 64-bit sur un Windows 64-bit et je trouve que dalle. Des infos, des solutions, des suggestions ? :/


Message édité par Taiche le 31-07-2007 à 13:08:59

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 31-07-2007 à 13:08:12   

Reply

Marsh Posté le 31-07-2007 à 13:35:48    

Recompiler g++ avec le support du mode 64 bits?  (J'ai deja fait pour d'autre OS mais pas pour Windows).

Reply

Marsh Posté le 31-07-2007 à 13:50:57    

Bin ouais, ça va se finir comme ça et ça me flingue que Cygwin propose pas ça [:pingouino]
Putain les softs GNU de barbus, ça me saoûle des fois :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 31-07-2007 à 14:31:59    

y'a pas une option dans VS 2005 pour passer le int en long long ?

Reply

Marsh Posté le 31-07-2007 à 14:34:46    

P'têt mais ce serait quoi l'intérêt dans mon cas ? Pour transformer tous mes int en __int64 ? :D


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 31-07-2007 à 14:38:50    

bin c'est pas ce que tu veux ? (avoir un int 64 bits ?)

Reply

Marsh Posté le 31-07-2007 à 14:46:47    

Bin juste pour mes unsigned long [:joce] L'histoire est toute con : le gars qui a fait le code (spa moi mais j'en hérite [:petrus75]), il lit des données dans un fichier. Il déplace son pointeur de fichier en utilisant du sizeof(<type de données> ), donc dans tout le code, j'ai un membre de la classe qui est unsigned long mais qui ne prend que 4 octets dans le fichier. Donc en 32 bits tout roule, mais en 64 paf, dans l'os passk'on lit 8 octets et pas 4.
Mon idée première est de faire une joulie conversion en int32 ou autre truc sur 4 octets, mais comme cet unsigned long est assez exposé, faut refaire des signatures de méthodes et tout [:petrus75] Donc j'aimerais pouvoir tester mon bordel sur 64 bits avant de l'envoyer chez le client en disant "vazy teste" [:joce]
Maintenant, j'peux aussi hardcoder salement un déplacement de 4 octets et tout garder en unsigned long mais chu pas sûr des effets sur le reste du code... idem, j'aimerais tester un prog tout con avant de benner tout ça [:petrus75]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed