Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 03.02.2012, 16:55 Titel: Wie funktioniert Swig? |
|
|
Kann mir jemand vielleicht erklären wie sas Swig Tool funktioniert?
Welche Parameter müssen angegeben werden um die C Header Dateien für FB zu wrappen ? |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 03.02.2012, 18:05 Titel: |
|
|
Wenn die Forensuche nach Swig dir hier keine ausreichenden Antworten bringt, solltest du mal(entsprechende Englischkenntnisse vorausgesetzt) im engl. Forum suchen(24 Seiten Trefferliste).
Ich kann dir anders leider nicht helfen..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 03.02.2012, 18:47 Titel: |
|
|
Eigentlich sollte eine readme dabei liegen, die es erklärt. Im Grunde ist es recht einfach (Annahme: der C-Header heißt 'foo.h'):
1. Datei namens 'foo.i' erstellen
2. Datei mit Inhalt füllen:
2.1 1. Zeile: '%module foo'
2.2 2. Zeile: '%include foo.h'
3. swig über die cmd aufrufen: 'swig foo.i'
4. Hoffen, dass swig mit dem Header klargekommen ist und alles richtig übersetzt hat. |
|
Nach oben |
|
 |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 03.02.2012, 22:52 Titel: |
|
|
Thx für die schnelle Hilfe
Eine Frage hätte ich aber noch und zwar.
Wenn ich jetzt eine Dll habe mit Header und Lib Datei.
Ich übersetze mit Swig + Manueller arbeit die Header Datei.
Dann mit pexport erstelle ich mir die Def die ich dann mit dem dlltool nach
*.dll.a converte.
So nun bräuchte ich ja wenn ich mein Programm in Freebasic Kompiliert habe immer die Dll Datei auch im Verzeichniss oder im System.
Könnte ich die Lib von der Dll nicht mit reimp in eine Obj Datei umwandeln und diese dann in meinem Kompilat mitverlinken so das ich keine Dll Datei mehr brauche?
Klar wird dann das Kompilat grösser aber das stört mich net  |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 04.02.2012, 01:20 Titel: |
|
|
Das ist durchaus möglich. Wird aber definitiv nicht empfohlen, da die Imports verloren gehen können. Die Bibliothek muss mit der selben Linker-(Version) erstellt worden sein.
Auch die Lizenzbestimmungen beachten; Viele proprietäre Lizenzen verbieten Änderungen an den Binaries.
/edit: Unterstrichenes trifft nicht zu; Eine DLL in Objekte zu zerlegen ist nicht möglich. (Hatte gerade Relinking verstanden) |
|
Nach oben |
|
 |
0oFreako0
Anmeldungsdatum: 17.12.2011 Beiträge: 114
|
Verfasst am: 04.02.2012, 12:09 Titel: |
|
|
Kurze Frage:
Wie übersetze ich das hier in freebasic
Test_API int __test_callspec__ func1 (LPFunc1 pFunc2);
Müsste doch mit Declare Function func1(byval LPFunc1) as int
(LPFunc1 pFunc2) oder bedeutet das es 2 parameter sind? |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 04.02.2012, 13:18 Titel: |
|
|
Um welche Lib gehts denn überhaupt? Evtl gibt es ja schon Header dazu und wir können schauen, ob es nicht schon eine statische Variante gibt.
Grundlagen C sollte man schon beherrschen, wenn man Header übersetzen will. (LPFunc1 pFunc2) bedeutet (ByVal pFunc2 As LPFunc1), func1 ist der Funktionsname, int ist der Rückgabetyp (allerdings As Integer, nicht nur int), __test_callspec__ ist irgendwo als WinAPI oder sonstiges definiert und würde in FB zu CDECL oder STDCALL werden (im Normalfall), Test_API wird auch irgendwo noch stehen und deutet auf den ersten Blick vermutlich den Export an. |
|
Nach oben |
|
 |
|