DLL Aufruf
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
count-dokuBetreff: DLL Aufruf |
Do, Dez 19, 2013 15:06 Antworten mit Zitat |
|
---|---|---|
Hallo,
mal so eine Frage, in BB kann man DLL's ja einigermaßen schnell und leicht einbinden. In Bmax stoße ich immer nur auf die Möglichkeit per LoadLibraryA die wohl A) relativ langsam ist und B) nicht immer funktioniert. Außerdem lese ich ganz oft Sätze wie, "man muss in Bmax so garkeine DLL's einladen" (z.B. hier: https://www.blitzforum.de/foru...hp?t=11993 ) Wie bitteschön soll ich dann aber sonst DLL's reinkriegen. Ich habe nirgendwo ne vernünftige Erklärung gefunden. Klar, wenn ich den C Code der DLL kenne kann ich in direkt in BMax importen, den kenne ich aber in meinem Fall nicht. Meine einzige Vermutung wäre jetzt noch, dass ich in C dann einen Wrapper für die DLL schreiben muss, aber läuft das nicht auch wieder auf LoadLibraryA hinaus? Oder gibt es irgendeine total einfache Art, DLL's, zu nutzen die ich einfach nur übersehe? lg, Count-Doku |
||
BtbN |
Do, Dez 19, 2013 15:19 Antworten mit Zitat |
|
---|---|---|
Wenns ne einfache C dll ist kannst du einfach den header in ein modul umbauen und ganz normal gegen die dll linken, gcc sollte das auch ohne lib file hin bekommen, das passende lib file zur dll schadet aber auf jedenfall nicht.
Bei C++ must du so oder so einen C wrapper schreiben, da BMax damit nicht umgehen kann. Kannst aber trotzdem auf die gleiche weise ein Modul bauen, und dort den wrapper code ablegen. |
||
count-doku |
Do, Dez 19, 2013 15:29 Antworten mit Zitat |
|
---|---|---|
Also muss ich mir mit C einen Weg drum bauen. Naja danke für die Antwort
Warum kann Bmax keine Userlibs mit decls ?! lg, Count-Doku |
||
BtbN |
Do, Dez 19, 2013 15:30 Antworten mit Zitat |
|
---|---|---|
Weil das nicht mehr nötig ist, da es direkt gegen DLLs linken kann. Und eine decls ist nichts anderes als ein Extern block in BMax. | ||
count-doku |
Do, Dez 19, 2013 15:48 Antworten mit Zitat |
|
---|---|---|
Also brauche ich ansich nurnoch nen Extern Block?
Das wäre natürlich cool, wo muss dann die DLL hin, zur exe? |
||
BtbN |
Do, Dez 19, 2013 15:50 Antworten mit Zitat |
|
---|---|---|
Du must gegen sie linken, ideralerweise indem du dem linker das zur DLL gehörende lib file gibst. Wenn du das nicht tust, must du die funktionen zur laufzeit laden, was je nach OS verschieden abläuft, unter Windows mit besagtem LoadLibrary + GetProcAddress. | ||
count-doku |
Do, Dez 19, 2013 17:31 Antworten mit Zitat |
|
---|---|---|
hmmh habe es jetzt hinbekommen.
Per LoadLibraryA etc. ist sogar nichtmal so langsam wie befürchtet. Danke Count-Doku |
||
Der Eisvogel |
Do, Dez 19, 2013 17:46 Antworten mit Zitat |
|
---|---|---|
Hallo count-doku,
am saubersten ist es dennoch, wenn du ein Lib-File einbindest. Wie du dies selbst generieren kannst, ist hier relativ gut beschrieben: http://adrianhenke.wordpress.c...-from-dll/ MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
count-doku |
Do, Dez 19, 2013 18:54 Antworten mit Zitat |
|
---|---|---|
Hm okay, wenn ich mir dann mal wieder VisualStudio runtergeladen habe probier ichs.
Danke |
||
Übersicht BlitzMax, BlitzMax NG Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group