Statische Bibliotheken ( .lib ) importieren

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

ChristianK

Betreff: Statische Bibliotheken ( .lib ) importieren

BeitragDo, Aug 30, 2007 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich arbeite zur Zeit an einer DLL mit Visual C++ und dieses erstellt ja bekanntlich eine .dll und eine .lib Datei, in der die Funktionsdefinitionen der DLL enthalten sind.

In BlitzMax mache ich also Folgendes:
Code: [AUSKLAPPEN]
Import "bibliothek.lib"

Extern
   Function FunktionAusDLL:Int( parameter:Float )
   ...
End Extern

Dann werden die Funktionen auch alle korrekt importiert.

Jetzt habe ich in C++ statt der DLL eine statische Bibliothek erzeugen lassen, damit ich keine DLL mehr brauche, sondern alles in der .exe mit drin ist.

Das Problem ist, dass BlitzMax die Funktionen aus der Lib nicht herausliest.
Code: [AUSKLAPPEN]
C:/Programmieren/BlitzMax/mod/blablub.mod/blubbla.mod/.bmx/datei.bmx.gui.release.win32.x86.o(code+0x34): undefined reference to `FunktionAusDLL'

Im Prinzip ist eine statische Bibliothek doch nichts anders als ein normales BlitzMax-Modul, oder?
Warum lässt sie sich nicht importieren?

Ich hoffe, jemand kennt die Lösung. ( Und kann sie mir sagen ^^ )
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Dreamora

BeitragDo, Aug 30, 2007 19:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst keine LIB importieren.

BM nutzt GCC und die GCC .a statische Library Struktur.

.a und .lib sind untereinander nicht kompatibel.

es gibt jedoch Möglichkeiten .a "wrapper" zu erzeugen für .lib und umgekehrt, so das es doch funktionieren sollte.
Es ist jedoch bedeutend nervenschonender normalerweise, direkt mit GCC / DevC++ oder sonst einer Windows IDE mit GCC / MingW support, eine .a zu erzeugen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragDo, Aug 30, 2007 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach so. Ich dachte es ist möglich, weil das Importieren von DLL-Funktionen über .lib-Dateien auch funktioniert.
Aber dann werde ich das ganze mal in Dev-C++ kompilieren. Danke für deine Hilfe. Smile
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Dreamora

BeitragFr, Aug 31, 2007 10:24
Antworten mit Zitat
Benutzer-Profile anzeigen
DLL und lib haben nichts gemeinsam ...

Aus DLL kannst du nur importieren wenns entweder ne SystemDLL ist und die funktion in den blitzmax/lib a files drin ist oder du loadlibraryA etc nutzt.
und das geht weil DLL von Microsoft spezifiziert wurden und gleich aussehen müssen und sonst halt einfach keine DLL sind.

statische Libraries hingegen sind vollständig compiler spezifisch.
Da hilft selbst die dateiendung nichts, zb hat borland auch .lib, sind aber mit VC inkompatibel.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragFr, Aug 31, 2007 13:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Aus DLL kannst du nur importieren wenns entweder ne SystemDLL ist und die funktion in den blitzmax/lib a files drin ist oder du loadlibraryA etc nutzt.

Nein, es geht wie gesagt auch mit selbst gemachten DLLs, deren Funktionen durch die mit VC erstellte .lib importiert werden.

Und weil man mit .lib-Dateien diese Funktionen importieren kann, dachte ich mir, dass man das auch komplett statisch machen kann, also ohne DLL.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Dreamora

BeitragFr, Aug 31, 2007 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du, aber nur mit .a und nicht .lib

GCC versteht VC .lib oder borland .lib nicht und umgekehrt.



aber es wundert mich dass dein anfangs beispiel funktioniert. Muss an der simplizität der LIB liegen, denn eigentlich kann der GCC damit nichts anfangen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group