Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mae
Anmeldungsdatum: 04.06.2008 Beiträge: 26
|
Verfasst am: 28.07.2008, 17:41 Titel: Versionsabfrage bei *.DLL.A (FreeImage Update 3.10) |
|
|
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 |
|
|
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 28.07.2008, 18:02 Titel: |
|
|
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 |
|
|
Mae
Anmeldungsdatum: 04.06.2008 Beiträge: 26
|
Verfasst am: 29.07.2008, 08:48 Titel: :-( |
|
|
...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 |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 29.07.2008, 10:52 Titel: Re: :-( |
|
|
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.
siehe http://forum.qbasic.at/viewtopic.php?p=78498#78498
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
|
Mae
Anmeldungsdatum: 04.06.2008 Beiträge: 26
|
Verfasst am: 29.07.2008, 14:09 Titel: ...ach hätte ich nur... |
|
|
Ich hab mir mal alle Dateien dort heruntergeladen.
Und nun hab' ich die selben Probleme, wie diejenigen dort auch...
Warum hab ich von den alten Dateien kein Backup gemacht?
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 |
Doch nur eine Fehlermeldung: Zitat: | ---------------------------
FreeImage.exe - Einsprungpunkt nicht gefunden
---------------------------
Der Prozedureinsprungpunkt "FreeImage_FlipVertical" wurde in der DLL "FreeImage.dll" nicht gefunden.
---------------------------
OK
---------------------------
|
Wo bekomme ich nun ein neues passendes Bündel für diese verflixten Biblotheken, das zeug dort paßt bei mir nicht... |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 29.07.2008, 22:02 Titel: freeImage 3.9.3 Bastelei |
|
|
Du hast leider Recht!
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 |
|
|
Mae
Anmeldungsdatum: 04.06.2008 Beiträge: 26
|
Verfasst am: 30.07.2008, 08:30 Titel: Vielen Dank Volta |
|
|
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
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 |
|
|
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 13.08.2008, 10:18 Titel: |
|
|
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
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 |
|
|
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 14.08.2008, 14:31 Titel: |
|
|
Achso, das stimmt. Es funktioniert aber bei mir, wahrscheinlich, weil ich FreeImage_OutputMessageProc nicht verwende.
Ich habs korrigiert. Einfach nochmal runterladen. |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 15.08.2008, 11:50 Titel: |
|
|
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 |
|
|
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 16.08.2008, 09:01 Titel: |
|
|
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
Zuletzt bearbeitet von Cherry am 16.08.2008, 12:27, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1875 Wohnort: D59192
|
Verfasst am: 16.08.2008, 10:33 Titel: |
|
|
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 |
|
|
Mae
Anmeldungsdatum: 04.06.2008 Beiträge: 26
|
Verfasst am: 16.08.2008, 11:03 Titel: |
|
|
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 |
|
|
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 16.08.2008, 12:23 Titel: |
|
|
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 |
|
|
Mae
Anmeldungsdatum: 04.06.2008 Beiträge: 26
|
Verfasst am: 16.08.2008, 13:03 Titel: |
|
|
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. _________________ Man gewöhnt sich an alles!
...sogar an sich selbst...
(Okay - darauf warte ich noch) |
|
Nach oben |
|
|
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 16.08.2008, 21:08 Titel: |
|
|
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 |
|
|
Mae
Anmeldungsdatum: 04.06.2008 Beiträge: 26
|
Verfasst am: 20.08.2008, 11:12 Titel: vielen Dank |
|
|
...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
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!
- gibt es hier gar keine Herzchen oder Sternchen im Forum? -
Hast Du dies wunderbare Werk auch schon in anderen FB-Foren verteilt?
Wieder ein Problem weniger!
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 |
|
|
|