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
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
Lade die Visual C++ runter. Hier mal ein Beispiel:
#if defined(_MSC_VER)
#include <windows.h>
#define DLL extern "C" __declspec(dllexport)
#else
#define DLL
#endif
DLL double AddNumbers (double a, double b)
{
return a + b;
}
DeepRed92 danke
und mehr braucht man nicht das dann debugen und die dll ist fertig oder?
und wie kann ich es auf rufen mit 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]Hi,
du kannst die Dll auch mit C# oder VB erstellen.
Ende 1. Seite
MFG.
RAPTOR-ONE
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
#if defined(_MSC_VER)
#include <windows.h>
#define DLL extern "C" __declspec(dllexport)
#else
#define DLL
#endif
int AddNumbers ( int a, int b)
{
return a + b;
}
Alles anzeigen
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
C Alles anzeigen#if defined(_MSC_VER) #include <windows.h> #define DLL extern "C" __declspec(dllexport) #else #define DLL #endif int AddNumbers ( int a, int b) { return a + b; }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 !
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:
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
// Blubb.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
int AddNumbers( int a, int b)
{
return a + b;
}
Alles anzeigen
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
Wie kann ich mir dann eine dll machen
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
@eF_Hacks
ich auch aber , das bring mich auch noch nicht weiter wie ich eine dll erstellen kann
Sieh dir bitte mal das hier an, Simon.
Gruß
@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