Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

27.03.2007, 20:36

Versuche DLL zu erstellen und einzubinden (c++)

Versuche gerade eine DLL zu erstellen und auszuführen. Bin bis jetzt nach folgendem tut vorgegangen:

http://www.resourcecode.de/view.php?id=776

Die Dll zu erstellen klappt so weit, allerdings bekomme ich sie in kein Projekt eingefüht. würde mich freuen wenn einer von euch ein weiteres Tutorial kennt oder mir sagen könnte auf was ich achten sollte.

Sheddex

unregistriert

2

27.03.2007, 20:53

Schaue dir mal mein Tutorial an, vielleicht funktioniert's ja damit.

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

3

27.03.2007, 22:50

man kann die ganze dll aber auc dynamisch einbinden.
bsp, wie ich bis jetzt meine engine einbinde:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
HMODULE             library;
BlackEngine*        (__stdcall* Engine)();

    Engine = (BlackEngine*(__stdcall*)())(GetProcAddress(library, "GetEngineInstance"));
    if(!Engine)
    {
        MessageBox(NULL, L"Fehler beim 'Fangen' der Funktion: GetEngineInstance()", L"FEHLER", MB_OK);
    }

4

28.03.2007, 14:44

mal ein konkretes Beispiel: bin folgendermaßen vorgegangen (VC++)

Neues Projekt angelegt (DLL)
cpp-datei hinzugefühgt
folgenden cod reingeschrieben:

C-/C++-Quelltext

1
2
3
4
__declspec(dllexport) int add(int a, int b)
{
    return a+b;
}


und zu guter letzt kompiliert. Nun habe ich die Datei: "dlltest.dll"

Soweit der erste Teil bis hier hin hat alles geklappt :D ----------------------

Nun lege ich ein neues Projekt an (win32-konsolenanwendung) füge eine cpp-Datei hinzu und tippe ein:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
#include "dlltest.cpp"

int main()
{

    cout << add(1,2);

    return 0;
}


Naja un hier hängts, habe die dll in das Verzeichniss des neuen Testprojektes kopiert, und darauf in dessen Debug-verzeichnis, darauf hin habe ich die dll in VC++ zum projekt hinzugeführt hat aber alles nichts geholfen,

#include "dlltest.cpp"

dlltest.cpp kann nicht gefunden werden

Sheddex

unregistriert

5

28.03.2007, 14:56

Mach doch mal mein Tutorial durch...

- Man sollte ein #define haben welches je nach Situation entweder im- oder exportiert.

- Erstelle eine Header Datei in der die Deklaration der Funktion steht und eine Source Datei in der die Definition steht.

- Und vor allem: Die Header Datei muss dann auch dem Projekt hinzugefügt werden.

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

6

28.03.2007, 19:44

nicht unbedingt. wenn er keine header hat....
aber eine cp datei fügt man dem projekt einfach nur bei. wird dann automatisch mit einbezogen.

7

29.03.2007, 16:52

wie soll ich die denn dem Projekt hinzufühgen die is doch in der Dll

8

29.03.2007, 16:56

so nochmal: hab jetzt eine Funktionierende DLL mit folgenden Inhalt:


C-/C++-Quelltext

1
2
3
4
__declspec(dllexport) int add(int a, int b)
{
    return a+b;
}


kann mir jetzt jemand kruz den code posten, den ich brauche um die Funktion aus der Dll zu laden

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

29.03.2007, 16:57

Willst du statisch oder dynamisch linken? Dynamisch machst du das über LoadLibrary und GetProcAddress und brauchst garnichts dem Projekt hinzuzufügen. Statisch fügst du die entsprechenden Header ein, deklarierst alle Funktionen, Klassen, Objekte etcpp mit __declspec( dllimport ) und linkst die entsprechende .lib Datei, fertig.

In beiden Fällen brauchst du, um das Programm auszuführen, die kompilierte Dll.
@D13_Dreinig

10

29.03.2007, 17:52

Statisch, also wenn das projekt kompiliert wird.

aber was ich nicht verstehe:

Zitat von »"David_pb"«

und linkst die entsprechende .lib Datei, fertig.


es geht doch um eine DLL

Werbeanzeige