CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

(visualC++) Erreur de linker

lag-it
lag-it
Niveau 10
13 juin 2005 à 19:06:26

Je rencontre ces derniers temps une erreur assez étrange sous Visual C++ . net ( 2002) : l´erreur LNK1000.
Le problème c´est que cette erreur ne dépends pas de mon code mais du linker lui même visiblement puisque j´ai droit à chaque fois au message " Internal error during Pass2" avec le log :

" cpu.obj : fatal error LNK1000: Internal error during Pass2

Version 7.00.9955

ExceptionCode = C0000005
ExceptionFlags = 00000000
ExceptionAddress = 0047157C ( 00400000) " C:\Program Files\Microsoft Visual Studio . NET\Vc7\bin\link.exe"
NumberParameters = 00000002
ExceptionInformation[ 0] = 00000001
ExceptionInformation[ 1] = 00000001
CONTEXT:
Eax = 405A33B8 Esp = 0012F2E4
Ebx = 1032E800 Ebp = 3FFF0000
Ecx = 00000000 Esi = 405A32FC
Edx = 00000001 Edi = 400062F8
Eip = 0047157C EFlags = 00010246
SegCs = 0000001B SegDs = 00000023
SegSs = 00000023 SegEs = 00000023
SegFs = 0000003B SegGs = 00000000
Dr0 = 0012F2E4 Dr3 = 1032E800
Dr1 = 3FFF0000 Dr6 = 00000000
Dr2 = 00000000 Dr7 = 00000000"

La doc est muette ou presque sur ce cas de figure, conseillant simplement de noter les circonstances d´apparition de l´erreur et d´appeler le support technique.

C´est d´autant plus gênant que cette erreur survient à chaque fois que j´essaie de recompiler mon projet après modification : la première fois le linkage plante et m´affiche cette erreur et lorsque je relance le processus, tout va bien.
Quelqu´un à une idée ?

kufa
kufa
Niveau 9
13 juin 2005 à 20:15:13

Hmm une erreur de linker :) Bienvenu au club, enfin bon moi c est pas visual qui plante ; )

Ca peut venir d une partie de ton code que le linker ne supporte pas, mais la je ne t apprends pas grand chose, ou une option du linker qui n est pas supportee correctement, mais la je ne t apprends toujours rien de plus. Une technique c est de desactiver tous les . cpp de la compilation, et d en rajouter un par un, donc pour obtenir un . lib temporaire pour voir si ca marche. Lorsque l ajout d un . cpp plante, bingo, faut trouver pkoi celui la. Si aucun plante, ca doit etre une option de generation de code executable.
Sinon essaye de passer en mode verbose pour le linker, peut etre qu il plante au chargement d un . obj, qui serait donc malforme..

Enfin en traduit: good luck :P

lag-it
lag-it
Niveau 10
13 juin 2005 à 20:31:16

Lol merci :-d
Mais le plus bizarre c´est quand même que le linker plante à la première tentative, mais fonctionne à la seconde lors de la tentative de liaison...

LGV
LGV
Niveau 28
13 juin 2005 à 22:41:44

pareil ! et comme pour les " internal compiler error" ( également tres explicite...), essaye de commenter des bouts de code, et de ré-ecrire différement la partie incriminée

tu parles de VC 2002, est-ce que tu ne ferais des statics dans des templates de templates ? je me souviens d´avoir été emmerd... avec ça, alors que c´est corrigé dans le 2003 et suivant.

lag-it
lag-it
Niveau 10
14 juin 2005 à 17:51:48

Nan nan, c´est vraiment du code ultra classique : c´est visiblement une séquence à l´intérieur d´une procédure manipulant des tableaux.
Pas de pratique bizarre ni rien...

lag-it
lag-it
Niveau 10
14 juin 2005 à 18:22:51

Surtout que le programme marche nickel après la seconde tentative ( fructueuse cette fois) de compilation...

lag-it
lag-it
Niveau 10
14 juin 2005 à 22:13:06

Visiblement j´ai trouvé le fragment de code qui n´allait pas, un :

( world+id)->membre

que j´ai remplacé par :

world[id].membre

Y a quand même rien de flagrant :doute:

Ptival
Ptival
Niveau 10
15 juin 2005 à 08:00:32

( world+id)->membre

ça m´a l´air super pas bien ça :\
Ah moins que id soit un multiple de sizeof(world), je pense que ça peut foutre une merde incroyable ton programme dans le cas contraire :\

Attendons l´avis des experts :)

lag-it
lag-it
Niveau 10
15 juin 2005 à 14:18:33

Y a aucune raison que ca bugue : c´est de l´arithmétique des pointeurs et ca fonctionne très bien.
Ca équivaut à écrire ( *(world+id)).membre.

Sache que les notations world[id] et *(world+id) sont synonymes ( un nom de tableau étant en réalité un pointeur constant)

De toutes facons le problème ne survient pas à l´exécution mais au linkage, et je me suis appercu que le linker fonctionnait en réalité une fois sur 3 environs et que cette ligne n´y était pour rien.

Le problème reste entier et mon projet se retrouve au point mort :( ( ca marche, maisca fait sale cette histoire....)

LGV
LGV
Niveau 28
15 juin 2005 à 14:57:45

je confirme que c´est exactement la meme chose. La compilation doit subir qq " side effects" sur certaines formulations, et faire planter au final... On a tous plus ou moins deja rencontre des cas ou il faut reecrire qq lignes qui font EXACTEMENT la meme chose, mais differement.

gollumkawder
gollumkawder
Niveau 10
15 juin 2005 à 15:27:18

" qui font EXACTEMENT la meme chose, mais differement."

srigolo comme phrase, bon, il est urgent d´attendre là

lag-it
lag-it
Niveau 10
19 juin 2005 à 18:32:16

Il semblerait que la désactivation des liens incrémentiels aie définitivement résolu le problème :doute:

Par contre quelqu´un sait-il comment désactiver la fonction / EDITANDCONTINUE ? Car je me tape un warning du linker à chaque fois vu que les liens incrémentiels sont désactivés.
( J´ai essayé " /EDITANDCONTINUE:NO", mais c´est pas ca :) )

gollumkawder
gollumkawder
Niveau 10
19 juin 2005 à 18:48:40

A quoi sert l´incremental linking ?

Perso sur un projet quand je mets ´/INCREMENTAL:NO´
Il me mets
LINK : warning LNK4075: ignoring ´/EDITANDCONTINUE´ due to ´/INCREMENTAL:NO´ specification

Si c´est dépendant ça va pas arranger ton affaire

Mais j´ai vu que si on changait le degré de warning du compilo on avait de toute façon des tonnes d´erreurs en W4..

gollumkawder
gollumkawder
Niveau 10
19 juin 2005 à 18:49:53

-erreurs +warnings
Sauf si on mets " considerer les warns comme des errs.."

dnob700
dnob700
Niveau 10
19 juin 2005 à 18:57:04

gollum : propriété du projet / onglet C++ / page Général la troisème propriété ( format des info de débug) pour virer le edit & continue ( enfin je pense que ça doit être ça).

gollumkawder
gollumkawder
Niveau 10
19 juin 2005 à 19:05:57

Dnob > merci mais le warning que j´ai provoqué etait volontaire, par contre ta réponse est utile pour lag-it surement

lag-it
lag-it
Niveau 10
19 juin 2005 à 19:58:44

Ouaip, merci dnob c´est effectivement ca :ok:

gollumkawder : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_.2f.incremental.asp

" An incrementally linked program is functionally equivalent to a program that is nonincrementally linked. However, because it is prepared for subsequent incremental links, an incrementally linked executable ( .exe) file or dynamic-link library ( DLL):

Is larger than a nonincrementally linked program because of padding of code and data. ( Padding allows the linker to increase the size of functions and data without recreating the . exe file.)
May contain jump thunks to handle relocation of functions to new addresses.
Note To ensure that your final release build does not contain padding or thunks, link your program nonincrementally."

gollumkawder
gollumkawder
Niveau 10
19 juin 2005 à 20:41:30

merci pour le lien

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment