#pragma Library [ERLEDIGT]

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

#pragma Library [ERLEDIGT]

Beitrag von Manfred »

Hi,

ich war bis gerade der Meinung, dass es genügt irgendwo in einem PRG

Code: Alles auswählen

#pragma Library("XBTBASE1.LIB")
#pragma Library("XBTBASE2.LIB")
einzubinden und da gilt das für das ganze Exe File.

Jetzt muß ich feststellen, das in einem getrennten Obj File, welches mit eingebunden wird, eine Funktion aus den Tools als nicht bekannt angemeckert wird beim Compilieren mit VX.

Wo denke ich denn nun schon wieder falsch?
Zuletzt geändert von Manfred am Mi, 14. Apr 2010 20:11, insgesamt 1-mal geändert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
dirk
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 29
Registriert: Mi, 05. Jul 2006 15:17
Wohnort: 26689 Augustfehn

Beitrag von dirk »

Meiner Meinung nach ist es so, daß man die Anweisung #pragma library() für jede einzelne prg Datei wiederholen muß, in der diese verwendet werden soll. So habe ich es bislang immer gehandhabt.
Aber vielleicht mache ich ja auch etwas falsch ?

dirk
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

Beitrag von Manfred »

Hm,

eigentlich nicht. Ich hatte es bisher immer so gemacht, dass ich die Anweisung in einer Datei stehen hatte, die auf jeden Fall immer eingebaunden wird. Das hat bisher auch immer so geklappt. Nur jetzt mal wieder nicht. Ich denke mal, es handelt sich um einen Denkfehler, auf den ich jetzt nicht so schnell komme.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16586
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 116 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
wahrscheinlich wird die Datei, in der das pragma nicht steht bei Dir in der Reihenfolge vor der Datei, in der das pragma steht, compiliert....

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15710
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 73 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

aus Dokumentationsgründen macht es Sinn, wenn man die PRAGMA in die PRG schreibt in denen man eine fremde DLL braucht.

ABER: Manfred hat auf jeden Fall dahingehend Recht, dass eine Anweisung für die ganze EXE reicht !

Dieser PRAGMA sorgt ja nur dafür, dass der Linker die *.LIB die nötig sind mit in die EXE linkt.

Ein Problem kann allerdings auftreten, wenn eine Funktion nicht direkt im Quellcode aufgerufen wird, sondern z.B. nur in einem Textcodeblock der zur Laufzeit aufgelöst wird. Unter Clipper wurde eine solche Funktion nicht eingelinkt und fehlte somit zur Laufzeit. Unter Xbase++ dachte ich kann das nicht auftreten, da die DLL immer verfügbar ist aber meine dummy Funktion habe ich weiterhin in Betrieb:

Code: Alles auswählen

...
function dummy() // diese wird nie aufgerufen
    ... 
    FehlendeFunktion()
    ...
return nil
versuche mal ob es so weggeht.

Es könnte natürlich auch einfach ein Tippfehler im Quellcode sein ;-)
Gruß
Hubert
dirk
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 29
Registriert: Mi, 05. Jul 2006 15:17
Wohnort: 26689 Augustfehn

Beitrag von dirk »

Ich habe jetzt mal eine Project.xpj erzeugt, in der ich die Libraries angegeben habe. Dann kan ich auf die Einträge #pragma library() verzichten.

Wenn man die Dateien in der Projektdatei angibt, dann linkt der Linker diese zusammen.

dirk
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16586
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 116 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Dirk,
das ist zwar richtig, soll aber unter VX nicht mehr so gemacht werden!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15710
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 73 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Beitrag von brandelh »

Martin Altmann hat geschrieben:Hallo Manfred,
wahrscheinlich wird die Datei, in der das pragma nicht steht bei Dir in der Reihenfolge vor der Datei, in der das pragma steht, compiliert....
Viele Grüße,
Martin
Wenn man Xbase++ mit PBUILD /G direkt aufruft hat der Standpunkt von #PRAGMA LIBRARY (im Gegensatz zu den anderen PRAGMAs) keinen Einfluss.

Ob sich VX da anders verhält weiß ich jetzt nicht, ich vermute aber dass es intern erst ein PBUILD /G durchführt und danach PBUILD und dann wäre es auch egal.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

Beitrag von Manfred »

Also die Reihenfolge ist erstmal wurscht. Ich habe alles mal ein wenig hin und hergeschoben zwischen den OBJ Dateien im Projektfile, aber es ändert sich nichts. Watt'n Mist, jetzt lief alles so schön in den letzten Tagen.....
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1931
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Beitrag von Rolf Ramacher »

Hi,

also die XBTBASE1.LIB und die XBTBASE2.LIB habe ich in der project.xpj

z.B.
#pragma Library( "XppUI2.lib" ) verwende ich in der prg nur, wenn ich den für bestimmte Dinge benötige.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15710
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 73 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Beitrag von brandelh »

Manfred hat geschrieben:Also die Reihenfolge ist erstmal wurscht. Ich habe alles mal ein wenig hin und hergeschoben zwischen den OBJ Dateien im Projektfile
eigentlich sollte man die LIB unter der Rubrik PRG einbauen und danach mit PBUILD /G die Projektdatei anpassen lassen.
Unter VX soll man darin eigentlich gar nichts mehr per Hand machen (wie die PRG reinkommen weiß ich aber auch nicht), wenn man die LIB aber wie die PRG einbindet müsste es gehen.

Zeig uns doch bitte deine project.xpj und den Auszug mit dem Pragmas per Cut&Paste, also nicht abtippen ...
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

Beitrag von Manfred »

Hm,

die Pragma Anweisung steht in einer DLL. Wenn ich sie dort entferne, dann meckert die rum, dass ihr die Tools fehlen. Also habe ich sie in meine Appsys gepackt, weil die auf jeden Fall nur als Obj vorhanden ist und überall eingebunden wird, jetzt klappt es. Scheint wohl in meiner Kombination nicht so gemacht werden zu dürfen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15710
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 73 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

die PRAGMA sorgen dafür, dass die EXE oder eine DLL beim Linken die Verweise auf die XbToolsIII DLL erhält. Der Compiler macht da erstmal nix (soweit ich das weiß). Der Linker setzt dann die Teile zusammen.

Wenn du eine DLL / EXE erzeugst und in der PRG steht die PRAGMA dann funktioniert das, denn der ALINK bindet alles zusammen.

Wenn du aber eine OBJ nimmst, deren PRG damals eine PRAGMA intus hatte, jetzt aber als OBJ eingebunden wird, dann ist da kein Hinweis auf die Tools vorhanden. Hier müsstest du dann die PRAGMA neu setzen !

PS: kannst du dich erinnern dass (nahezu) jeder von vorkompilierten OBJ Dateien abgeraten hat ;-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21248
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 211 Mal
Danksagung erhalten: 71 Mal

Beitrag von Manfred »

brandelh hat geschrieben:
PS: kannst du dich erinnern dass (nahezu) jeder von vorkompilierten OBJ Dateien abgeraten hat ;-)
Nö,

im Moment nicht. Ich weiß, dass wir irgendwann einmal über eigene Bibliotheken gesprochen hatten, aber wie soll ich es sonst regeln? Es kam damals keine zufriedenstellende Lösung zustande, meine ich mich erinnern zu können.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten