OVH Cloud OVH Cloud

Erreur Compiler Borland C++ 3.1

5 réponses
Avatar
Philippe
Bonjour

Excusez moi mais ce Message n'est peut etre pas a sa place, mais je ne
trouve pas de forum ou poser la question

J'ai repris pour un client un vieux soft MSDOS compilé sous Borland C++
3.1.

Tous ce passait bien jusque maintenant et depuis ce matin (apres avoir
créer un fonction", j'ai au linkage l'erreur suivante
"Group DGROUP exceeds 64K"

Qui pourrait m'aider car L'aide Borland n'est pas tres claire sur ce
message.

Phil

5 réponses

Avatar
Horst Kraemer
On Sun, 26 Oct 2003 10:46:11 +0100, Philippe wrote:

Bonjour

Excusez moi mais ce Message n'est peut etre pas a sa place, mais je ne
trouve pas de forum ou poser la question

J'ai repris pour un client un vieux soft MSDOS compilé sous Borland C++
3.1.

Tous ce passait bien jusque maintenant et depuis ce matin (apres avoir
créer un fonction", j'ai au linkage l'erreur suivante
"Group DGROUP exceeds 64K"

Qui pourrait m'aider car L'aide Borland n'est pas tres claire sur ce
message.

Phil


Si cela s'est produit à l'occasion de la création d'une fonction (sans
ajouter des données statiques quelconques) la raison est que tu
utilises le modèle de mémoire le plus petit
(données+pile+tas+code<dk) appelé TINY compilé par

bcc -mt monprog... (-mt . model TINY)

Dans ce modèle le programme entier se trouve dans DGROUP qui sera
adressé par un unique segment de taille 64k. La seule raison de créer
un programme par -mt est qu'on veut transformer la fichier .exe
sortant en .com. Quand tu compiles simplement par


bcc monprog...

ou

bcc -ms monprog... (modéle SMALL, défault)


alors tu auras un segment entier de 64k pour le code et un autre
segment de 64k pour le reste du programme et l'erreur disparaitra.

--
Horst

Avatar
Christophe Lephay
Philippe wrote:
J'ai repris pour un client un vieux soft MSDOS compilé sous Borland
C++
3.1.

Tous ce passait bien jusque maintenant et depuis ce matin (apres avoir
créer un fonction", j'ai au linkage l'erreur suivante
"Group DGROUP exceeds 64K"

Qui pourrait m'aider car L'aide Borland n'est pas tres claire sur ce
message.


Les applications DOS sont limitées à un ou plusieurs segments de 64K.
1- Choisis le modèle Large dans tes options de compilations (plusieurs
segments de code et de données) ;
2- Déplace tes variables globales en les créant sur le tas (avec new).

L'option 1- est certainement suffisante si le programme tourne déjà.

Sinon, effectivement, c'est limite hors sujet...

Chris

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', Philippe wrote:

Bonjour

Excusez moi mais ce Message n'est peut etre pas a sa place, mais je
ne
trouve pas de forum ou poser la question

J'ai repris pour un client un vieux soft MSDOS compilé sous Borland
C++
3.1.

Tous ce passait bien jusque maintenant et depuis ce matin (apres
avoir
créer un fonction", j'ai au linkage l'erreur suivante
"Group DGROUP exceeds 64K"

Qui pourrait m'aider car L'aide Borland n'est pas tres claire sur
ce
message.


<HS>
Il existe quelques articles sur le sujet sur le web.

En gros, c'est un problème lié à l'utilisation du processeur x86 en mode réel
(mémoire segmentée). Le DGROUP contient non seulement les données statiques
(modifables ou non), mais aussi les tableaux initialisés et les chaines. On
peut tenter de réduire la taille des statique en utilisant la mémoire
dynamique, mais pour les chaines il n'y a pas de solution (activer quand même
l'otion 'merge strings').

On peut aussi jouer sur le 'automatic far data threshold' qui placent les
données > à une certaine taille en segment séparé.

</HS>

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', Horst Kraemer wrote:

Si cela s'est produit à l'occasion de la création d'une fonction (sans
ajouter des données statiques quelconques) la raison est que tu
utilises le modèle de mémoire le plus petit
(données+pile+tas+code<dk) appelé TINY compilé par

bcc -mt monprog... (-mt . model TINY)


Pas forcément. Une simple chaine de caractères suffit à exploser le DGROUP,
même en modèle large.

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', "Christophe Lephay"
wrote:

J'ai repris pour un client un vieux soft MSDOS compilé sous Borland
C++
3.1.

Tous ce passait bien jusque maintenant et depuis ce matin (apres avoir
créer un fonction", j'ai au linkage l'erreur suivante
"Group DGROUP exceeds 64K"

Sinon, effectivement, c'est limite hors sujet...



C'est 'carrément' hors-sujet! Les gens du monde 32-bit flat doivent se
demander de quoi on parle...

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/