DllCall geht nicht

  • Hallo Au3 Community, ich habe eine Collisions.dll geschrieben, und der DllCall() geht nicht (mit ihm wollte ich testen ob es geht X()

    Also hier mal das Au3 script, im Anhang die .dll:

    [autoit]


    _Collision(0, 0, 20, 20, 50, 50, 20, 20)
    Func _Collision($ObjectX, $ObjectY, $ObjectWidth, $ObjectHeight, $WallX, $WallY, $WallWidth, $WallHeight)
    Local $DllOpen = DllOpen("Collision.dll")
    Local $Call = DllCall($DllOpen, "double", "Collision", "double", $ObjectX, "double", $ObjectY, "double", $ObjectWidth, "double", $ObjectWidth, "double", $ObjectHeight, "double", $WallX, "double", $WallY, "double", $WallWidth, "double", $WallHeight)
    If IsArray($Call) Then
    Return $Call[0]
    Else
    Return -1
    EndIf
    EndFunc ;==>_Collision

    [/autoit]

    €: Danke für die Hilfe im Voraus

    Die C++ funktion sieht wie folgt aus:

    Code
    double Collision(double ObjectX, double ObjectY, double ObjectWidth, double ObjectHeight, double WallX, double WallY, double WallWidth, double WallHeight)
  • Hi,
    warum verwendest du doppelt genaue Flieskommazahlen für eine Kollisionsabfrage? Die werden Prozessorintern mit 80 Bit Genauigkeit gerechnet, je nach aktuellem Luftdruck bzw Schönwetterlage bekommst du 18 Nachkommastellen. Muß das dermassen genau sein?
    Integer ist 10-20x schneller und auch einfacher programmiert^^! Der Compiler kann nichts für die Stalls, so wie ich den Code verstanden habe sind das eine Handvoll Additionen und Vergleiche. Machs in Integer und teste mal, ob AutoIt nicht schneller ist, das ist kein Witz!

    Ausserdem wäre ein Besuch im örtlichen Kindergarten angebracht, lass dir dort beibringen, wie man bis 8 zählt..... :rofl::rofl::rofl:

    [autoit]

    $a= _Collision(0, 0, 20, 20, 50, 50, 20, 20)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $a= = ' & $a & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Func _Collision($ObjectX, $ObjectY, $ObjectWidth, $ObjectHeight, $WallX, $WallY, $WallWidth, $WallHeight)
    Local $DllOpen = DllOpen("Collision.dll")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $DllOpen = ' & $DllOpen & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    Local $Call = DllCall($DllOpen, "double", "Collision", "double", $ObjectX, "double", $ObjectY, "double", $ObjectWidth, "double", $ObjectHeight, "double", $WallX, "double", $WallY, "double", $WallWidth, "double", $WallHeight)
    If IsArray($Call) Then
    Return $Call[0]
    Else
    Return -1
    EndIf
    EndFunc ;==>_Collision

    [/autoit]
  • hä wie wo bis 8 ???
    €: Oh shit, jetzt seh ich den fehler :D
    €²: O.o, die UDF ist ja komplett fail ...

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal