E2045 Fichier object incorrect Format: “XXX.obj”

Je travaille sur un projet de migration de x32 bits à x64 . Ici, j’utilise ce code:

 {$L com_1.obj} {$L com_is1.obj} {$L com_2.obj} 

Mais lors de la compilation du code, je reçois une erreur en tant que

 [dcc64 Error] XXX.dpr(919): E2045 Bad object file format: 'E:\MyProj\com_sha.obj' 

Je ne suis pas en mesure de comprendre pourquoi cela se produit.

Est-ce dû au fichier obj 32 bits utilisé pour la compilation du projet Delphi x64 bits?

Si c’est le cas, j’ai également essayé de créer un fichier obj avec un environnement x64 bits.

Quelqu’un peut-il m’aider s’il vous plaît à ce sujet?

J’utilise Delphi 10 Seattle .

Vous ne pouvez pas utiliser un object 32 ​​bits avec le compilateur 64 bits. Vous devez recomstackr votre code avec un compilateur 64 bits.

Vous pouvez utiliser différents compilateurs pour le faire. Bien que j’aie entendu parler de personnes ayant réussi avec gcc, je n’ai jamais réussi à le faire. Je pense que le compilateur Embarcadero, basé sur Clang, peut être utilisé, mais je n’ai personnellement aucune expérience de cela. J’ai toujours utilisé le compilateur Microsoft pour créer des objects 64 bits. Et c’est certainement comme cela que Embarcadero lui-même l’a fait pour des bibliothèques telles que zlib qu’elles associent à leur RTL.

Oui, vous devez convertir ces fichiers .obj en 64 bits.

La conversion d’applications Delphi 32 bits en systèmes Windows 64 bits indique:

  • Fichiers .obj externes 64 bits : si vous vous attendez à ce que votre application Windows 64 bits soit liée à un fichier .obj externe, n’oubliez pas qu’une version 64 bits du fichier .obj doit être liée à un fichier 64 bits. Application Windows.