Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Versionsabfrage bei *.DLL.A (FreeImage Update 3.10)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Mae



Anmeldungsdatum: 04.06.2008
Beiträge: 26

BeitragVerfasst am: 28.07.2008, 16:41    Titel: Versionsabfrage bei *.DLL.A (FreeImage Update 3.10) Antworten mit Zitat

Ich habe gerade einen Code im Netz gefunden, der vorraussetzt das man die FreeImage Bibliothek auf 3.10 aktualisiert.

Dumm wie ich bin habe ich gedacht, man müßte nur die BI-Datei ersetzen. Dann war ich aber doch nicht so dumm und hab erst noch ein wenig herumexperimentiert und dabei herausgefunden: In der BI-Datei ist von 3.5 die Rede und mein FB-Programm gibt bei FreeImage_Version 3.7 heraus: Na Hoppla!

Also weiter Googlen:
Nach einigen Seiten habe ich herausgefunden, das die folgenden Dateien aktualisiert werden müssen:

- FreeImage.bi
- FreeImage.dll
- libfreeimage.dll.a

Nun braucht' ich nicht alle Dateien auf gut Glück zu ersetzen:
Versionsinformation sind ja in der BI-Datei wiederzufinden (die man ja mit jeden beliebigen Editor öffnen kann).
Auch bei der DLL-Datei wußte ich mir noch zu helfen: Rechtsklick -> Eigenschaften -> Tab: Version

Doch wie zum Geier sehe ich nun welche Version mir da von der DLL.A-Datei in die Hände gefallen ist?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 28.07.2008, 17:02    Titel: Antworten mit Zitat

Gar nicht, eine .a Datei enthalt
a) vorkompilierten Programmcode oder
b) statische Addressen für den Linker, damit er weiss wo er welche Funktion findet (hier der Fall)

Eine .a Datei bringt erstmal gar keine Versionsinformationen mit, sie passt lediglich zu einer Version der Bibliothek.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mae



Anmeldungsdatum: 04.06.2008
Beiträge: 26

BeitragVerfasst am: 29.07.2008, 07:48    Titel: :-( Antworten mit Zitat

...oh... - Jeh!
Da scheint es also gar keine Lösung zu geben, das man mal immer wieder in die Situation gerät, das man Dateien hat die nicht zueinander gehören.
Schwer für mich damit klar zu kommen.

Noch versteh ich immer nicht auf welche Adressen (in welchem Ort?!) die A-Datei zeigt.

Da in Option a) die rede von "vorkompilierten Programmcode" die Rede war, habe ich mal diesen Code und die kompilierungsmethode gesucht.

Es ist also eine DEF-Datei die hier zu finden ist:
http://fbc.svn.sourceforge.net/viewvc/fbc/trunk/FreeBASIC/lib/win32/def/

Und hier scheine ich die aktuelle FreeImage.Def gefunden zu haben:
http://fbc.svn.sourceforge.net/viewvc/fbc/trunk/FreeBASIC/lib/win32/def/FreeImage.dll.def?revision=4673

Tatsächlich findet nur die "FreeImage.DLL" Erwähnung. Merkwürdigerweise ist keine Version genannt.
Sonst wüßte man bescheid und könnte nun via
Code:

dlltool -k -d freeimage.dll.def -l libfreeimage.dll.a

die notwendig A-Datei selbst erstellen.

Vielleicht würde es helfen zu verstehen, was in der Def-Datei überhaupt steht. Und warum wird aus der "FreeImage.dll.def" überhaupt die "libfreeImage.dll.a" gemacht und nicht etwa "freeimage.dll.a"?
Letztere Antwort finde ich vermutlich in der "FreeImage.bi"?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 29.07.2008, 09:52    Titel: Re: :-( Antworten mit Zitat

Mae hat Folgendes geschrieben:
Da scheint es also gar keine Lösung zu geben, das man mal immer wieder in die Situation gerät, das man Dateien hat die nicht zueinander gehören.
Ist leider so. missbilligen

siehe http://forum.qbasic.at/viewtopic.php?p=78498#78498
Zitat:
Nachtrag:
eine passende libfreeimage.dll.a für FreeImage 3.10 hat cha0s hier erstellt:
http://www.freebasic.net/forum/viewtopic.php?p=103533#103533

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mae



Anmeldungsdatum: 04.06.2008
Beiträge: 26

BeitragVerfasst am: 29.07.2008, 13:09    Titel: ...ach hätte ich nur... Antworten mit Zitat

Ich hab mir mal alle Dateien dort heruntergeladen.
Und nun hab' ich die selben Probleme, wie diejenigen dort auch...
mit dem Kopf durch die Mauer wollen Warum hab ich von den alten Dateien kein Backup gemacht? Kopf schütteln

Da "PaLib" (DevKidPro) auch die FreeImage.DLL nutzt und noch eine alte Version hat, hab ich noch nicht meine Verzeichnisse aufgeräumt oder die Path-Einstellungen verändert.

Dachte ich laß mir erst mal erzählen welche DLL Version gefunden wird.

Code:
#include "freeimage.bi"
  Dim As String FiVersion = *FreeImage_GetVersion
  Print "FreeImage: " & FiVersion
Sleep
End 0

weinen Doch nur eine Fehlermeldung:
Zitat:
---------------------------
FreeImage.exe - Einsprungpunkt nicht gefunden
---------------------------
Der Prozedureinsprungpunkt "FreeImage_FlipVertical" wurde in der DLL "FreeImage.dll" nicht gefunden.
---------------------------
OK
---------------------------


mit den Augen rollen Wo bekomme ich nun ein neues passendes Bündel für diese verflixten Biblotheken, das zeug dort paßt bei mir nicht...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 29.07.2008, 21:02    Titel: freeImage 3.9.3 Bastelei Antworten mit Zitat

Du hast leider Recht!
Zitat:
Nachtrag:
eine passende libfreeimage.dll.a für FreeImage 3.10 hat cha0s hier erstellt:
http://www.freebasic.net/forum/viewtopic.php?p=103533#103533

EDIT: mit dem Kopf durch die Mauer wollen
Auch diese libfreeimage.dll.a funktioniert nicht mit der FreeImage.dll (3.10.0) weinen weinen weinen weinen


Auf freebasic-portal.de habe ich meine alte freeImage3.9.3 Bastelei eingestellt:
FreeBASIC und FreeImage 3.9.3 Hoffe es hilft dir!
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mae



Anmeldungsdatum: 04.06.2008
Beiträge: 26

BeitragVerfasst am: 30.07.2008, 07:30    Titel: Vielen Dank Volta Antworten mit Zitat

Vielen Dank für Deinen 393 Patch!
Nachdem ich also die "FreeImage393.bi" und "libFreeImage393.a" entpackt habe brauchte ich nur noch den Include-Befehl zu ändern.
Code:
#include "freeimage393.bi"
  Dim As String FiVersion = *FreeImage_GetVersion
  Print "FreeImage: " & FiVersion
Sleep
End 0

Und bekomme nun brav die Anwort: 3.11.0 happy

Ob wir das in das english Forum auch Posten sollten?
...oder hast Du schon?

Was mir natürlich am besten daran gefällt ist die einfach und elegante Lösung wie Du nun die Versionsnummer ins Spiel gebracht hat.
Ich versteh immer noch nicht viel von den a-Dateien.
Doch irgendetwas stand in der MSDN - das es wohl zumindest möglich wäre in den DEF-Dateien entsprechende Versionsinformationen zu hängen.
Soetwas kann man ja eigentlich gar nicht zur genüge machen...

Doch jetzt könnte ich mich eigentlich auch endlich wieder um das wesentliche kümmern.
Vielen Dank Volta!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 12.08.2008, 20:29    Titel: Antworten mit Zitat

Ich hab es geschafft, passende .def und .a-Dateien für FreeImage 3.11.0 zu erstellen:

http://cherrytree.at/misc/FreeImage.dll.def
http://cherrytree.at/misc/libfreeimage.dll.a

mfG Cherry
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 13.08.2008, 09:18    Titel: Antworten mit Zitat

Hi Cherry, bist du sicher?
Mit welcher .bi arbeitest du?
In deiner FreeImage.dll.def ist noch der gleiche Fehler wie in der 3.10.0 die im neuen FB 0.20.0b enthalten ist.
Code:
FreeImage_OpenMultiBitmap@24                  =  _FreeImage_OpenMultiBitmap@24
reeImage_OutputMessageProc                    =  FreeImage_OutputMessageProc
FreeImage_Paste@20                            =  _FreeImage_Paste@20
Das sind die Zeilen 166-168, schau mal in der Zeile 167 durchgeknallt
Ohne Unterstrich ist ja ok, aber als 'reeImage_OutputMessageProc' ist sie nicht definiert.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 14.08.2008, 13:31    Titel: Antworten mit Zitat

Achso, das stimmt. Es funktioniert aber bei mir, wahrscheinlich, weil ich FreeImage_OutputMessageProc nicht verwende.

Ich habs korrigiert. Einfach nochmal runterladen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 15.08.2008, 10:50    Titel: Antworten mit Zitat

bleibt noch die Frage:
Mit welcher .bi arbeitest du?
Probier mal:
Code:
#Include Once "windows.bi"
#Include Once "FreeImage.bi"
Screen 18,32
Print "FreeImage.bi:"; FREEIMAGE_MAJOR_VERSION;_
                        FREEIMAGE_MINOR_VERSION;_
                        FREEIMAGE_RELEASE_SERIAL
Dim As String fimg=*FreeImage_GetVersion
Print "DLL Version : ";fimg

Dim As String fiFormat
Print "Erkannte Bildformate : ";
For i As Integer = 0 To 50
  fiFormat= *FreeImage_GetFormatFromFIF(i)
  If fiFormat="" Then Exit For
  If i> 0 Then Print ", ";
  Print fiFormat;
Next
Print
Sleep
funktioniert mit der bi aus FB 0.20.0b nicht, oder?
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 16.08.2008, 08:01    Titel: Antworten mit Zitat

Doch:



Ich habe die FreeImage.bi, die bei FB v0.20.0b dabei war.

EDIT: Ok, ich hab ein klein wenig geändert, hab ich ganz vergessen grinsen


Zuletzt bearbeitet von Cherry am 16.08.2008, 11:27, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1874
Wohnort: D59192

BeitragVerfasst am: 16.08.2008, 09:33    Titel: Antworten mit Zitat

ich bekomm leider nur Fehlermeldungen:
Zitat:
C:\FB0200b\fbc -s gui "FreeImgtest.bas"
C:/FB0200B/inc/FreeImage.bi(57) error 4: Duplicated definition in 'type RGBQUAD as tagRGBQUAD'
C:/FB0200B/inc/FreeImage.bi(65) error 4: Duplicated definition in 'type RGBTRIPLE as tagRGBTRIPLE'
C:/FB0200B/inc/FreeImage.bi(81) error 4: Duplicated definition in 'type BITMAPINFOHEADER as tagBITMAPINFOHEADER'
C:/FB0200B/inc/FreeImage.bi(82) error 4: Duplicated definition in 'type PBITMAPINFOHEADER as tagBITMAPINFOHEADER ptr'
C:/FB0200B/inc/FreeImage.bi(89) error 4: Duplicated definition in 'type BITMAPINFO as tagBITMAPINFO'
C:/FB0200B/inc/FreeImage.bi(90) error 4: Duplicated definition in 'type PBITMAPINFO as tagBITMAPINFO ptr'
C:/FB0200B/inc/FreeImage.bi(491) error 56: Illegal specification, at parameter 3 (1) of FreeImage_OpenMultiBitmap() in 'declare function FreeImage_OpenMultiBitmap alias "FreeImage_OpenMultiBitmap" (byval fif as FREE_IMAGE_FORMAT, byval filename as zstring ptr, byval create_new as BOOL, byval read_only as BOOL, byval keep_cache_in_memory as BOOL = 0, byval flags as integer = 0) as FIMULTIBITMAP ptr'

Build error(s)

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Mae



Anmeldungsdatum: 04.06.2008
Beiträge: 26

BeitragVerfasst am: 16.08.2008, 10:03    Titel: Antworten mit Zitat

Auch mir geht's nicht anders als volta.
Hab' extra noch einmal die FreeImage.Bi überprüft, weil ich doch auch die FBC 0.20.0b (über 0.18b) installiert hab.

Da ich den FreeBASIC Editor 1.0.6.1 von KetilO benutze, öffnet dieser dann ja auch gleich die FreeImage.BI in der ja auch die Info steht: 3.10.0.

Cherry magst Du uns mal Deine Dateien zur Verfügung stellen, damit ich das mal auf meinem XP SP3 nochmal ausprobieren kann?
Also am liebsten ein komplettes Archiv mit den benötigten FreeImage-Bibliothek-Files dem Source und auch Deiner Exe - bitte...

Zur Zeit kann ich mir das nicht erklären, warum es bei Dir funktioniert, und bei uns nicht.
_________________
Man gewöhnt sich an alles!
...sogar an sich selbst...
(Okay - darauf warte ich noch)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 16.08.2008, 11:23    Titel: Antworten mit Zitat

Oh, das Problem konnte ich lösen durch Anhängen von Underscores! Das hab ich vergessen zu erwähnen!

Hier, meine Dateien: http://cherrytree.at/misc/freeimage_fb.rar

mfG Cherry

EDIT: Zum Testen eignet sich Volta's Code prima.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mae



Anmeldungsdatum: 04.06.2008
Beiträge: 26

BeitragVerfasst am: 16.08.2008, 12:03    Titel: Antworten mit Zitat

Schade, das Du nicht Deine EXE mitgeschickt hast.
Von dem Archiv das Du zur Verfügung gestellt hast, hab ich nichts zum laufen bringen können.
Auch weiß ich nicht was Du meinst (und vorallem WO?) mit Underscores...

Der Fehler den volta und ich haben, basiert ja darauf, das die Zeile:
Code:
#INCLUDE ONCE "windows.bi"
auch die folgende Bibliothek einbindet:
Code:
#include once "win/wingdi.bi"
Dort ist bereits folgendes definiert:
wingdi.bi hat Folgendes geschrieben:
type RGBQUAD
...
type RGBTRIPLE
...
...und vieles mehr...
Daher müßte in der FreeImage.bi stehts stehen:
Code:
 ' cause WinGDI allready define RGBQUAD
#ifndef RGBQUAD
 type RGBQUAD as tagRGBQUAD
#endif

...oder gibt es noch einen geschickteren bzw. einfacheren Weg?

Noch kann ich nicht Nachvollziehen, wie Du es geschafft hast, das Programm zum laufen zu bekommen. traurig
_________________
Man gewöhnt sich an alles!
...sogar an sich selbst...
(Okay - darauf warte ich noch)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 16.08.2008, 20:08    Titel: Antworten mit Zitat

Ich habe die BI noch etwas optimiert und meine EXE hinzugefügt - einfach nochmal runterladen:

http://cherrytree.at/misc/freeimage_fb.rar

Zum Selber-Kompilieren einfach die Ordner inc und lib in den FreeBASIC-Ordner kopieren (Windows aktualisiert die Dateien), dann sollte es klappen.

mfG Cherry

EDIT: Das mit den Underscores hat sich erübrigt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Mae



Anmeldungsdatum: 04.06.2008
Beiträge: 26

BeitragVerfasst am: 20.08.2008, 10:12    Titel: vielen Dank Antworten mit Zitat

peinlich ...ich bin erst heut morgen dazu gekommen es endlich auszuprobieren - obwohl ich es mir gleich am Samstag runtergeladen hatte.
Nach dem 2. Anlauf funktionierte es auch happy

Ich hatte erst alles in ein Verzeichnis kopiert - ich dachte das wäre besser als mir die Dateien im FB-IDE Verzeichnis überzubügeln. Ich war auch der Meinung, das es mit "voltas" 393 so ging.
Doch dann wagte ich es doch nach dem ich hier und da in den Code geschaut hab: Klasse Arbeit!

Vielen Dank Cherry!
lächeln - gibt es hier gar keine Herzchen oder Sternchen im Forum? - lächeln
Hast Du dies wunderbare Werk auch schon in anderen FB-Foren verteilt?

Wieder ein Problem weniger! cool
Doch leider finde ich es immer noch sehr chaotisch, wie kann man nur der verschiedenen Versionen vernünftig Herr werden...?
Hätte jetzt nicht auch schon von Cherry die Versions-Nummer der BI-Datei irgendwie erweitert werden müssen, damit klar wird, das dies nun die gepatchte Datei für den nun ordentlichen Windows-Betrieb ist?
_________________
Man gewöhnt sich an alles!
...sogar an sich selbst...
(Okay - darauf warte ich noch)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz