[Builder] Access violation

Access violation [Builder] - C++ - Programmation

Marsh Posté le 07-04-2004 à 14:52:47    

Bonjour tout le monde,
 
J'ai un gros probleme sous Borland C++ Builder 6 avec mon application que je n'arrive pas a resoudre. J'apprecierais ENORMEMENT toute aide qui pourrait m'aider a avancer.
Mon programme comporte plusieurs unités avec une form et 2 sans. Dans l'une d'elles, quand j'"include" le header d'une des unités avec une form, ca va bien, mais quand l'unité n'en a pas, j'obtiens une erreur du linker qui dit "Access violation, link terminated". Et quand j'essaye de recompiler, j'obtiens "[Linker Error] Could not delete ProjectName.tds (project already open in IDE?)".
 
Quelqu'un aurait-il une idée (quelle qu'elle soit) sur la raison de mon probleme et sur comment y remedier? Merci beaucoup d'avance, je suis au bord de la crise de nerf...
 
A+

Reply

Marsh Posté le 07-04-2004 à 14:52:47   

Reply

Marsh Posté le 07-04-2004 à 14:59:39    

"quand l'unité n'en a pas"
 
quand elle n'a pas quoi ? de header ? tu inclues un header qui n'existe pas ?
 
Sinon pour l'erreur je sais pas trop d'où ça pourrait venir. Soit un bug (ça ne serait pas le seul) soit une version un peu foireuse de C++Builder (genre copie douteuse :D)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-04-2004 à 15:17:19    

Non, ce n'est pas une copie douteuse! (pour une fois)
l'unité dont je parlais n'a pas de form associée car elle me sert juste a la creation de tableaux avec des calculs dessus, l'utilisateur n'appelle pas directement les fonctions de cette unité. Mais j'ai deja inclus cette satanée unité dans d'autres et ca a tres bien marché, je ne vois vraiment pas pourquoi ca ne marche pas avec la nouvelle...
 
Pour l'erreur avec le fichier .tds, c'est vrai que mon ordi s'est planté mechamment recemment avec BCB qui tournait. Ca pourrait etre la cause de tout tu penses?

Reply

Marsh Posté le 07-04-2004 à 15:22:35    

Ce que t'appelles "unité", c'est le .cpp ? En général ça ne s'inclue pas, on n'inclue que les .h/.hpp
Pour l'erreur du .tds, bah supprime le fichier, c'est juste un fichier temporaire.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-04-2004 à 23:33:18    

ce que j'appelle unité, c'est la structure .cpp + .h, obtenu dans BCB6 par New->Unit, il n'y a pas de form (.dfm) associée. J'inclus bien-sur le header seulement. Pour une form, New->Form produit un .cpp, un .h et un .dfm.
 
D'un autre coté, il y a pas mal de communication entres mes .cpp, donc je dois inclure presque tous les headers dans chaque .cpp, avec appel de variables exterieures par "extern". Y a t-il une limite a cela?
 
L'ennui avec le .tds est que tant que BCB reste ouvert, je ne peux pas l'effacer ("ce fichier est utilisé par un programme... blah blah blah" ). Je dois donc a chaque fois fermer BCB, effacer le .tds, rouvrir BCB... plutot penible.
 
FroggyDew

Reply

Marsh Posté le 07-04-2004 à 23:55:05    

normalement y a pas de limite,
je sais pas d'où pourrait venir ce crash [:spamafote]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 07-04-2004 à 23:58:09    

Est-ce que l'inclusion du "header" ne reclamerais pas des ressources qui ne sont pas encore actives. Pour ce problème, dans certains cas il m'a suffit d'inverser l'ordre des "includes" ou même des "Application->CreateForm" dans lunité principale.

Reply

Marsh Posté le 08-04-2004 à 23:24:55    

hum hum, j'ai du nouveau, ce n'est pas terrible...
Apres avoir joué avec l'ordre des "includes" et la declaration des forms dans le Winmain, en essayant un "Make", j'ai obtenu instantanément le fameux "Access violation", donc je re-essaye et cette fois j'obtiens une erreur bcb.exe "An exception (C0000005) occured during DllEntryPoint or DllMain in module C:\Program Files\Borland\CBuilder6\Bin\ilink32.dll"
AAAAAaaaaaahhhh!!! Qu'est-ce qu'il se passe???

Reply

Marsh Posté le 08-04-2004 à 23:57:51    

Désolé mais là je n'ai pas idée de ce qui arrive. Mais pour supprimer le .tds, il suffit de lancer "Tout construire", ça efface et recrée tous les fichiers de débogage et de liens.

Reply

Marsh Posté le 18-04-2004 à 00:15:37    

OK CA MAAAAARCHE !!!!!!!!
 
Bon, le problème résidait dans le fait d?avoir la declaration de mes variables globales dans mes headers, donc les différentes inclusions des headers des unités faisait que ces variables étaient déclarées plusieurs fois, ce qui perturbait le linker.
 
C?est une erreur que je ne referai plus, j?aurais appris? 2 semaines pour trouver la raison de ce problème? ce que la programmation peut être cruelle parfois?.
 
Merci quand-même pour votre aide, ce forum est génial.
A+

Reply

Marsh Posté le 18-04-2004 à 00:15:37   

Reply

Marsh Posté le 27-11-2009 à 12:38:23    

Slt a tous!
J'ai un problème qui me semble proche de celui posé sans ce forum!
 
J'ai crée une classe et lorsque j'appelle une fonction membre de la celle avec comme paramètre un variable de même typt q la classe concernée, j'ai le message d'erreur suivant:
"access violation at 0x00403373:wrtie of adress 0x0006c074"
 
Quelqu'un pourrait t-il m'aider?
RMQ: je bosse sous c++ builder!

Reply

Sujets relatifs:

Leave a Replay

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