BlitzMax NG dll -> Haxe
Übersicht

![]() |
TrustBetreff: BlitzMax NG dll -> Haxe |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute,
habe mal mit BlitzMax NG eine simple dll erzeugt (geht ja dank Brucey sehr einfach) Creating DLLs In der dlltest.dll ist folgender code: BlitzMax: [AUSKLAPPEN] Function TheAnswer:Int() Export Buildeinstellungen sind: App Options: Build Shared Library Platform: Win32 Architecture: x64 Also ist die calling convention cdecl. In Haxe habe ich folgenden Code: lib.load Code: [AUSKLAPPEN] class Main {
static var InitBRL:()->Int = cpp.Lib.load("dlltest","InitBRL",0); static var TheAnswer:()->Int = cpp.Lib.load("dlltest","TheAnswer",0); static function main():Void { InitBRL(); trace(TheAnswer()); } } Mit folgenden build parametern: Code: [AUSKLAPPEN] -cp src
-cpp cpp -D analyzer-optimize -main Main Das compiled wunderbar. Führe ich die exe dann allerdings aus, bekomme ich folgende Meldung: Code: [AUSKLAPPEN] Error : Could not load module dlltest@InitBRL__0 Error : Could not load module dlltest@TheAnswer__0 Die von bmax erzeugte .def file enthält folgendes: Code: [AUSKLAPPEN] LIBRARY dlltest
EXPORTS TheAnswer InitBRL InitBRL und TheAnswer wurden zwar exportiert jedoch stimmen die Referenzen scheinbar nicht. Dachte zuerst dass das Problem vom name mangling her rührt. Durch einen kurzen Blick in den Bmax ng c output musste ich feststellen dass die Namen unberührt bleiben: Code: [AUSKLAPPEN] BBINT TheAnswer(){
return 42; } BBINT InitBRL(){ bbLibInit(); return 0; } Was könnte also das Problem sein? Hat jemand Erfahrung damit? |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe keine Erfahrung damit und mit Windows DLLs. Ich kenne auch Haxe nicht, aber hast du schon mal versucht, die Funktion im BlitzMax "TheAnswer__0" zu nennen? Die Fehlermeldung scheint auszusagen, dass er in der DLL so eine Funktion sucht.
Wenn das funktioniert müsste man sich halt noch etwas für InitBRL überlegen, aber in dem einfachen Beispiel sollte die TheAnswer Funktion auch ohne vorheriges InitBRL funktionieren. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Trust |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Ja habe ich versucht. Die dll wieder in BlitzMax zu laden geht auch. Das ist ein Problem seitens Haxe wie ich feststellen musste. |
||
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group