[gelöst]Problem mit C++ DLL

  • Hallo liebe C++ und AutoIt'ler ;)
    Ich habe hier ein problem mit meiner DLL.
    Mein DLL Code :



    Diesen Code kompiliere ich mit dem Microsoft Visual C++ 2005/2008 compiler mit folgenden optionen:
    Enable C++ exception handling (no SEH) [/EHs]
    und
    extern "C" defaults to nothrow


    MS Visual C++ 2008 ist auch installiert.


    Code::Blocks kompiliert ohne Errors und ohne Warnings.


    Nun habe ich folgendes AutoIt Skript.


    Dieser Code funktioniert (aber nicht so wie er soll).
    Mit int:cdecl bleibt die MsgBox leer. Mit int statt int:cdecl schreibt er in die Konsole Error:3,
    in der Hilfe steht dass das bedeutet,
    die Funktion wurde nicht gefunden, aber das kann doch nicht stimmen ?!?!
    Was muss ich machen damit ich keinen Error bekomme ?


    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.


    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.

    3 Mal editiert, zuletzt von PrideRage ()

  • Die Funktion heißt add und weiterhin kann es sein, dass du entweder in AutoIt cdecl als Aufrufschema aktivieren musst oder ein @NN an den Funktionsnamen anfügen musst (NN ist dabei die Zahl der Bytes, die alle Parameter zusammen benötigen)

  • Mein Fehler :/ die testFunc war noch vom verherigem lauf.


    @progandy 
    Ich rufe die Funktion nun mit dem Rückgabetyp "int:cdecl" statt "int" auf, nun kommt der error nicht mehr,
    aber die MsgBox bleibt leer.
    @NN funktioniert nicht (habe add@16 und add@32 versucht)

  • Die Zahl wäre wenn überhaupt 8 (int = 4 bytes).
    Ob du sie brauchst, bekommst du einfach mit z.B. dem DependencyWalker heraus, der die Funktionsnamen der DLL anzeigt.


    Du brauchst sie ja offensichtlich nicht, da du die cdecl-Konvention beim kompilieren verwendet hast ;)
    Wegen der leeren Rückgabe solltest du dir nochmal in der Hilfe die Rückgabe von DLLCall genauer anschauen. Das ist nmlich ein Array.