| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
philips Capt

Registrado: 16 Nov 2005Mensajes: 154
|
Publicado: Dom 18 Ene, 2009 6:50 pm Asunto: [ILINK32 Error] Fatal: Exceeded memory limit for block SegRe |
|
|
He añadido en el fuente de mi programa hecho en Code Gear 2007 simplemente un if y me sale este error.
Si añado cualquier condicional me sale lo mismo y si lo quito vuelve a compilar y linkar sin problemas
Parece que indica que he de asignarle mas memoria en alguna configuración ,pero en este momento no se que hacer
Agradezco una ayuda
Phil |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 18 Ene, 2009 7:12 pm Asunto: |
|
|
Yo intentaría aumentar max heap size en las opciones del proyecto->Linker.
Saludos. |
|
| Volver arriba |
|
 |
philips Capt

Registrado: 16 Nov 2005Mensajes: 154
|
Publicado: Dom 18 Ene, 2009 10:29 pm Asunto: |
|
|
Gracias por contestar Escafandra.
El valor estaba en 0x00100000, lo he puesto en 2147483647 que segun el propio borland es el valor máximi pero sigue sin funcionar
Lo peor de todo es que aparentemente el linker me está diciendo que basta, que no puedo escribir ni una linea mas
Menudo problemón tengo
Phil |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Lun 19 Ene, 2009 1:26 am Asunto: |
|
|
¿Tan grande es tu código que no puedes agregar mas instrucciones?
| philips escribió: | | El valor estaba en 0x00100000, lo he puesto en 2147483647 que segun el propio borland es el valor máximi pero sigue sin funcionar |
No me parece que tenga sentido. Si amplias el límite deberías poder agregar mas código. No creo que el problema venga por aquí. ¿Har probado a aumentar el espacio de la pila?. Imagino que el Image Base no lo has cambiado, para las aplicaciones debe ser 0x00400000.
Revisa bien las opciones del proyecto, intuyo que es ahí donde radica el problema.
Saludos. |
|
| Volver arriba |
|
 |
philips Capt

Registrado: 16 Nov 2005Mensajes: 154
|
Publicado: Lun 19 Ene, 2009 9:44 am Asunto: |
|
|
Borro el contenido porque se ha ducplicado el post
Phil
Ultima edición por philips el Lun 19 Ene, 2009 9:49 am, editado 1 vez |
|
| Volver arriba |
|
 |
philips Capt

Registrado: 16 Nov 2005Mensajes: 154
|
Publicado: Lun 19 Ene, 2009 9:47 am Asunto: |
|
|
La última línea de mi código al lado izquierdo pone 104329.Me imagino que una herramienta como Builder 2007 será capáz de compilar bastantes mas líneas
Respecto a los valores que me dices te los pongo:
Valores originales con los que compilaba y linkaba bien el proyecto hasta añadir el if que origina el problema
Base address: 0x00400000
Minimun Stack size: 0x00002000
Maximum Stack size : 0x00100000
Minimum heap size: 0x00001000
Maximum heap size: 0x00100000
Section flags e Image flags (en blanco)
He reemplazado el "1 " de Max Stack y de Max heap size por un "4" pero nada, el mismo error
[ILINK32 Error] Fatal: Exceeded memory limit for block SegRelocs in module Unit1.cpp
He buscado por Inet y solo he encontrado algunos posts de gente que le sucede lo mismo incluso con la version nueva 2009 pero ninguna solucion posible
Sigo buscando desesperado
Gracias
Phil |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Lun 19 Ene, 2009 10:52 am Asunto: |
|
|
Revisa también las opciones de compilación, tipo de procesador, data aligment y las optimizaciones.
También revisa errores de sintaxis que generen un error o lógico, asignaciones de memoria demasiado grandes en tiempo ce compilación, el uso de librerías externas o de terceros....
Saludos. |
|
| Volver arriba |
|
 |
philips Capt

Registrado: 16 Nov 2005Mensajes: 154
|
Publicado: Mie 28 Ene, 2009 1:13 pm Asunto: |
|
|
Perdon por la tardanza en contestar
He cambiado el tipo de procesador a Pentium Pro y me ha ido dejando añadir lineas hasta hoy mismo en que se ha vuelto a negar a dejarme seguir añadiendo lineas
Quizás se pueda cambiar el tipo de procesador de otro modo.
A ver si a Cesar o Leo se les ocurre alguna solucion posible
Phil |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Vie 30 Ene, 2009 2:15 am Asunto: |
|
|
Lo siento, nunca he tenido problemas de este tipo, y a ciegas sin el proyecto no puedo hacer nada.
Asegúrate de tener instaladas todas las actualizaciones que hayan salido para la versión que utilices. |
|
| Volver arriba |
|
 |
philips Capt

Registrado: 16 Nov 2005Mensajes: 154
|
Publicado: Sab 31 Ene, 2009 12:13 pm Asunto: |
|
|
Gracias Leo.
No obstante comentarte que he buscado un poco por Inet y hay personas que han tenido el mismo problema que yo, incluso algunos de ellos con el novísimo Builder 2009
Yo en primera instancia como he comentado anteriormente lo he solventado cambiando el tipo de procesador a Pentium Pro en las propiedades del proyecto, hasta que al fina he tenido que optar por crear una Dll y colocar en ella parte del código del principal
Desconozco so es posible definir al principio del fuente el tipo de procesador a usar
Realmente extraño, aunque mi código es un poco extenso (mas de 120 mil líneas)
Si lo solvento de alguna forma lo comentaré aqui
Saludos
Phil |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Sab 31 Ene, 2009 8:19 pm Asunto: |
|
|
Compartiendo el mensaje de _Leo, considero que el problema no esta en el Builder, pues yo mismo he compilado proyectos extensos, algunos de hasta mas de 40 Forms ( ventanas, dialogos, etc etc), sobrepasando en mucho los limites de las pilas y no he tenido ese fallo.
Me di a la tarea de buscar información y como tu dices también les ha sucedido a otras personas, pero tambien he visto que las personas no han tenido respuesta, pues no es un error tan ordinario.
Quiero suponer que la creación de Formularios no esta siendo favorable por parte de tu sistema y dejas formularios con componente que te consumen demasiada memoria, (Skins o muchos bmp en tus imágenes).
Muchas veces queremos transportar TODO en un solo ejecutable pero para ello existen las DLL o los BPL para segmentar el código. pues no todo debe cargarse de un "jalón" en la carga del EXE.
Considera esto, imágina a Windows el S.O que fuera un Ejecutable de 2Gb creo que tendria que tener 64Gb de Ram para poder ejecutarlo, por ello es la segmentación de codigo a travez de Dll's o librerias (Lib/Obj/etc etc)
Y estoy casi 100% seguro que es por ahi el tema.
Vamos puedo asegurarte que si marcas las opciones de Dynamic RTL y Packages tu programa se compila sin ningun problema. puede que el ejecutable sea demasiado extenso para hacerlo.
o bien tu ejecutable es demasiado grande que sin darte cuenta lo estas metiendo en modo debug y ello haga que no le quede a BCB para "debugear" tu codigo, intenta compilarlo en modo release.
Saludos. _________________
 |
|
| Volver arriba |
|
 |
|