Statische Bibliotheken ( .lib ) importieren
Übersicht

ChristianKBetreff: Statische Bibliotheken ( .lib ) importieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. ![]() |
||
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group