Probleme beim Kompilieren

Still in use?

Moderator: Moderatoren

Antworten
Benutzeravatar
Magic
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 343
Registriert: Mo, 11. Jul 2011 12:01

Probleme beim Kompilieren

Beitrag von Magic »

Ich stoße beim Kompilieren von Clipper Anwendungen (alte Kamellen, die ich ein wenig anpassen musste) auf folgende Probleme:

Bei Manchen Dateien heißt es: „Fatal C3001 Memory overbooked“.
Was macht Ihr in dem Fall :?:
Bisher habe ich die Dateien dann unterteilt und somit das Problem umgangen.
Nun bekomme ich aber wieder diesen Fehler bei einer Datei die ich bereits „aufgeteilt“ habe und die sich jetzt nicht mehr weiter sinnvoll unterteilen lässt.
Gibt es spezielle Parameter die Ihr beim Kompilieren solcher Dateien angibt? In der, zum Projekt gehörenden .LNK Datei sind Angaben zu stacksize und heapsize. Haben diese irgendwelche Auswirkungen auf das Kompilieren, so dass ich diese evtl. (nur) anpassen / hochsetzen muss :?:


Im Ordner des aktuellen Projekts finde ich eine Datei <Name>.RMK und <Name>.LNK.
Mir erschließt sich der Zusammenhang der beiden Dateien nicht ganz.
Was wird wann ausgeführt wenn ich mithilfe von RMAKE meine Anwendung kompilieren. Sind dann beide Dateien von Bedeutung? In der <Name>.RMK Datei finde ich am Ende einen Eintrag der auf die <Name>.LNK Datei verweist

Code: Alles auswählen

$(“SOURCE“)<Name>.LNK
$(BLINKER)<Name>.LNK
Wird beim kompilieren die <Name>.LNK aus der <Name>.RMK aufgerufen :?:
In der <Name>.RMK sind deutlich mehr .OBJ und .PRG Dateien angegeben als in der <Name>.LNK (in der <Name>.RMK sind alle Dateien enthalten die in der <Name>.LNK angegeben sind, und einige mehr) Was hat das zu bedeuten? Irrtum, Altlasten oder Absicht?

Sehe ich das richtig, dass in der <Name>.RMK alles angegeben ist, was kompiliert werden soll, aber in der <Name>.LNK gesagt wird,
was tatsächlich zur .EXE gelinkt werden soll :?:

Wäre schön wenn mich jem. in dieser Hinsicht aufklären könnte.
Gruß,
Magic
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Probleme beim Kompilieren

Beitrag von Tom »

Ich nehme an, dass die Probleme nicht beim Kompilieren, sondern beim Linken auftreten*. Die Erinnerung an diese Zeiten ist längst redlich getrübt, aber ich meine, aus solchen Gründen seinerzeit auf den BLINKER umgestiegen zu sein (der müsste inzwischen Freeware sein). Irgendwie irgendwann gab es da auch mal was namens "Exospace", das es dem internen Linker erlaubte, einen größeren Adressraum zu allozieren.

Gibt es nachvollziehbare Gründe dafür, das Projekt nicht einfach im Text-/Konsolenmodus mit Xbase++ zu erzeugen (etwa Drittbibliotheken)? Müsste halbwegs das gleiche bei rauskommen.

*Was Du relativ leicht herausbekommen kannst, indem Du die fraglichen PRGs einfach einzeln direkt kompilierst, also "CL <MeineSource>.PRG" oder "CLIPPER <MeineSource>.PRG".
Herzlich,
Tom
Benutzeravatar
Magic
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 343
Registriert: Mo, 11. Jul 2011 12:01

Re: Probleme beim Kompilieren

Beitrag von Magic »

Tom hat geschrieben:*Was Du relativ leicht herausbekommen kannst, indem Du die fraglichen PRGs einfach einzeln direkt kompilierst, also "CL <MeineSource>.PRG" oder "CLIPPER <MeineSource>.PRG".
So habe ich mir vorerst helfen können. Doch das ist nicht immer von Erfolg gekrönt. In manchen Fällen steigt das Programm dann zu Laufzeit aus. Erst wenn ich die betroffene .PRG unterteile und die Teile dann neu kompiliere geht es.
Tom hat geschrieben:Gibt es nachvollziehbare Gründe dafür, das Projekt nicht einfach im Text-/Konsolenmodus mit Xbase++ zu erzeugen (etwa Drittbibliotheken)? Müsste halbwegs das gleiche bei rauskommen
Ich muss gestehen, dass ich dies noch nicht probiert habe. Es handelt sich um Clipper Anwendungen, kompiliert mit Clipper 5.3
(Clip4win + Novellib + etliche Dr. Huggle Klassen + ? ).
Ich bezweifle, dass es so einfach funktionieren wird.
Gruß,
Magic
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Probleme beim Kompilieren

Beitrag von AUGE_OHR »

hi,
C3001 Out of memory

Erl„uterung: Dem Compiler steht nicht gengend Arbeitsspeicher zur
Verfgung.

L”sung: Die einfachste L”sung besteht darin, das Programm zu
verkleinern, indem die Anzahl der in der Programmdatei (.prg)
definierten Funktionen und Prozeduren verringert oder die Anzahl der
Programmdateien in der Skriptdatei fr den Compiler reduziert wird. Auch
die Verringerung der in der Applikation verwendeten
Preprozessordirektiven kann hilfreich sein. Wenn m”glich, sollten Sie
dem Compiler mehr Speicher zur Verfgung stellen, indem
speicherresidente Programme, die Sie nicht unbedingt ben”tigen, aus dem
Speicher entfernen.
tja das waren noch Zeiten mit 640KB ... ;)

ich hab deshalb mit QEMM gearbeitet und alles in den Bereich > D0000 verschoben und den A0000 Bereich dazu verwendet um weiter 64KB -> 704KB zu bekommen.

IMHO darf die Grösse einer PRG 64KB (???) nicht überschreiten ... das kann Cl*pper nicht
deshalb "zerlegen" und "einzelne" PRG verwenden d.h. für "jede" FUNCTION/PROZEDURE eine PRG !!!

ich habe mir dafür ein PRG geschrieben ( muss mal suchen ) was das erledigt. PRG per MEMOREAD einlesen mit mit AT() nach FUNCTION oder PROCEDURE suchen und per SUBSTR() den Teil als *.NEW raus schreiben.

da du jetzt viele *.PRG hast brauchst du ein *.RMK / *.LNK. Hier zu kannst du mein Tool Make5it.EXE verwenden (Source anbei)
MAKE5IT.ZIP
Cl*pper : erstellt *.RMK / *.LNK aus allen PRG im Verzeichniss
(174.01 KiB) 517-mal heruntergeladen
Make5It erstellt für BLINKER v2/3 "protect Mode" das LNK, also "anpassen"
gruss by OHR
Jimmy
Benutzeravatar
Magic
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 343
Registriert: Mo, 11. Jul 2011 12:01

Re: Probleme beim Kompilieren

Beitrag von Magic »

Danke Jimmy,

ich habe mit Deine Lösung angeschaut.
In diesem Fall, habe ich es gerade noch so hinbekommen (durch kompilieren der einzelnen Dateien), so dass die Anwendung wieder läuft.
Ich denke spätestens bei der nächsten Änderung werde ich wieder das gleiche Problem haben,
dann würde ich wohl auf die zukommen wenn mir dann noch etwas unklar ist.
Gruß,
Magic
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Probleme beim Kompilieren

Beitrag von AUGE_OHR »

hi

das Tool Make5it erzeugt dir ja LNK / RMK wenn du viele (kleinen) PRG hast.

zum "zerlegen" von grossen PRG hab ich noch ein Tool was einzelne PRG aus jeder "Proc / Func" macht.

allerdings funktioniert es nur bei "exakt"

Code: Alles auswählen

         DO CASE
            CASE "*"                = SUBSTR(cUpper,1,1)
   LOOP
            CASE "STATIC PROCEDURE" = SUBSTR(cUpper,1,16)
            CASE "STATIC FUNCTION"  = SUBSTR(cUpper,1,15)
            CASE "PROCEDURE"        = SUBSTR(cUpper,1,9)
            CASE "FUNCTION"         = SUBSTR(cUpper,1,8)
         OTHERWISE
            lappend := .T.
         ENDCASE
man sollte den Cl*pper Source also vorher durch einen "Formatter" schicken und UPPER ( Keyword ) wählen damit das Tool erfolgreich arbeitet.
gruss by OHR
Jimmy
Antworten