Eigene Dll erstelen

  • Hi @all
    Ich hab mal ne frage
    Wie kann man eine eigene Dll erstellen die man mit dllcall aufrufen kann die dann auch etwas ausführt
    zb. Rechenaufgaben
    (natürlich später was schwereres )

    Ich hoffe jemand hat dafür eine Antwort

  • [autoit]

    DllCall($dll, 'double', 'AddNumbers', 'double', $a, 'double', $b)

    [/autoit]

    Sinnvoller wäre aber die Funktion int zurück geben zu lassen..

  • wo kann ich oben bestimmen wo die datei gespeichert wird (die dll meine ich ) und ihren namen bestimmen
    @eF_Hacks was meinst du mit int zurückgeben
    return int a + b ?

  • int AddNumbers(int a, int b)
    {
    return a+b;
    }

    Sooo.. kurze erklärung:

    rot = Rückgabetyp der Funktion, in dem Fall "int", also ein 32-bit Integer
    blau = Wertetyp der übergebenen Parameter, in dem Fall "int", also ein 32-bit Integer
    grün = Funktionsname
    pink = Zwischen diesen Klammern (Block) steht das, was in der Funktion ausgeführt wird.
    orange = Das was in der Funktion ausgeführt wird.

    Jetzt würde auch der aufruf der Funktion anders aussehen.

    [autoit]

    DllCall($dll, 'int', 'AddNumbers', 'int', $a, 'int', $b)

    [/autoit]
  • Normalerweise benutze ich VS++ nicht.. eigentlich nen andren Compiler.
    Nun hab ich doch mal ne Frage

    Was gibst du an wenn die MsgBox aufgeht wo er fragt welche Exe benutzt werden soll? Titel war glaube ich "Executable for Debug Session"

  • @eF_Hacks wo kann ich den output pfad einbauen

    hab jetzt das

    im vc++ express edition von microsoft
    wass muss ich dann machen (auch schon gespeichert ) damit ich die dll hab
    der dateityp = .cpp

  • @eF_Hacks wo kann ich den output pfad einbauen

    hab jetzt das

    im vc++ express edition von microsoft
    wass muss ich dann machen (auch schon gespeichert ) damit ich die dll hab
    der dateityp = .cpp

    Das selbe hab ich einen Post über dir auch gefragt. Ich kenne mich mit VC++ nicht aus, ich arbeite normalerweise mit dem Bloodshed Compiler

    Edit: Drück einfach auf abbrechen, die DLL ist dann schon erstellt !

    Einmal editiert, zuletzt von eF_Hacks (23. September 2009 um 16:35)

  • Hi,
    nachdem der Code kompiliert wurde befindet sie sich in deinem Projektordner unter "Debug" oder "Release". Die dll kannst du danach beliebig umbenennen und umkopieren.
    Ich glaub jedenfalls das du das gemeint hast.

    MFG.
    RAPTOR-ONE

  • Jaja aber ich kann es nciht debugen der debug button ist nicht aktiv
    das ist ja das komische und ich habe ka warum
    ich habe einfach eine cpp datei erstellt und dann das script reingemacht oder brauche ich noch andere dateien oder ein projekt?

  • Omg ich mag Vc++ nicht..
    Also meine dll war erstellt und so weiter aber dependency walker hat mir gesagt das meine Function nicht mehr "Add" sondern "_add@8" heißt also ich sie exportiert habe.
    Dann wollt ich's mit ner def file machen die wie folgt aussieht:

    Code
    LIBRARY Blubb
    
    
    EXPORTS
    AddNumbers @1

    Doch allem anschein nach wird die def datei garnicht mit eingebunden. Erstellt habe ich die Blubb.def Datei indem ich oben auf "Project -> Add New Item -> General -> Textfile" gegangen bin, und diese dann Blubb.def genannt habe. Theoretisch müsste sie doch jet im Projekt mit enthalten sein?

    Wenn ich die DLL kompiliere seit Dependency Walker mir danach das meine Dll keine Funktionen hat ! Also hat der Linker die *.def file nicht mit eingebunden..
    Wenn ich Bugs in meine def File einbaue bekomme ich auch keinen Error!

    Hier mein Code von der Blubb.cpp

  • Wenn Du nur eine DLL erstellst, dann kannst Du diese nicht debuggen, weil Du keine Anwendung (EXE) erstellt hast, die diese DLL einbindet. ;)

    @eF_Hacks
    Bloodshed solltest Du nicht benutzen, der Compiler wird schon seit Jahren nicht mehr weiterentwickelt und war damals schon fehlerhaft.


    Gruß
    Greenhorn


  • Wenn Du nur eine DLL erstellst, dann kannst Du diese nicht debuggen, weil Du keine Anwendung (EXE) erstellt hast, die diese DLL einbindet. ;)

    @eF_Hacks
    Bloodshed solltest Du nicht benutzen, der Compiler wird schon seit Jahren nicht mehr weiterentwickelt und war damals schon fehlerhaft.


    Gruß
    Greenhorn

    Deswegen arbeite ich jetzt ja mit Vc++.. habe aber trotzdem Probleme damit.

  • Nun, wenn ich dich richtig verstanden habe, dann möchtest Du eine DLL erstellen, die ausführbaren Code enthält.
    D.h. Du wirst dich als erstes wohl oder übel mit einer anderen Programmiersprache auseinandersetzen müssen.

    Da hast du nun die freie Wahl.

    EDIT: @eF_Hacks
    Sieh dir mal die IDE von Code::Blocks an, die kann mit allen gängigen C und C++ Compilern umgehen, ist schlank, und gibt es für Linux, Mac und Windoof. ;)
    Code::Blocks
    Features


    Gruß
    Greenhorn


    Einmal editiert, zuletzt von Greenhorn (23. September 2009 um 17:38)

  • @eF_Hacks du musst dem Linker aber auch die *.def mitgeben.
    rechtsklich in deinem Projektmappenexplorer auf dein Projekt und dan Eigenschaften.
    Linker und dan Eingabe, da kannst du unter Moduldefinition die Datei angeben

    @simon du musst natürlich ein Projekt Klassenbibliotek anlegen

    MFG.
    RAPTOR-ONE