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

24.12.2007, 17:33

Strukturen in Dlls

Ich weiß, dass man nicht ohne weiteres Klassen in Dlls speichern kann. und da man mit VC++ 2005 Express auch beine libs erstellen kann, wollte ich mich mal erkundigen, ob man Strukturen in Dlls erstellen kann oder ob das auch nicht geht

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

24.12.2007, 17:38

Zitat

Ich weiß, dass man nicht ohne weiteres Klassen in Dlls speichern kann.

Erklär bitte, was du mit "nicht ohne weiteres" und was du mit "Klassen in Dlls speichern" meinst, weil die Frage ist irgendwie recht schwammig.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

XP^

Treue Seele

  • Private Nachricht senden

3

24.12.2007, 17:55

er meint wahrscheinlich, dass man Klassen in DLLs lagern kann.

Bei den Structs sollte es keine Probleme geben. Aber probiers doch mal, dann weißt du es ja ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

24.12.2007, 21:02

Strukturen sind in C++ genau das Gleiche wie Klassen (bis auf die Standard-Zugriffsspezifikation). Ob man jetzt eine Klasse exportiert oder eine Struktur, kommt aufs gleiche raus.
@D13_Dreinig

5

25.12.2007, 13:31

Zitat

und da man mit VC++ 2005 Express auch beine libs erstellen kann

Und VC++ 2005 EE kann auch ohne weiteres *.lib und *.dll erzeugen ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

6

26.12.2007, 23:23

Re: Strukturen in Dlls

Zitat von »"Mr. Data"«

Ich weiß, dass man nicht ohne weiteres Klassen in Dlls speichern kann.

Was meinst du damit? Du musst einfach diesen Code in eine Dll tippen, diese compilieren, usw, und im Programm die Klasse benutzen:

C-/C++-Quelltext

1
class __declspec(dllexport) CKlasse{};

Und Für Strukturen ist das genau das gleiche. Also verstehe ich den Sinn deiner Frage nicht so ganz...
Signaturen werden überbewertet

7

30.12.2007, 20:46

Sorry dass ich erst jetzt antworte, aber mein internet hat irgendwie Probleme mitz der Seite... ich muss mich jedesmal ca 3mal anmelden bis es Funktioniert... also: Mit kompliziert meinte ich, wie es in Scherfgens Buch erklärt wird, also dass man nur virtuelle Methoden benutzen darf und eine "Fabrikfunktion" zur Erstellung einer Instanz in die dll schreiben muss... Das es so einfacvh ist, wusste ich nicht

thanks @ all

EDIT:

Hab das jetzt getested, aber jetzt wird behauptet das die Klasse nicht definiert worden wäre. Ich habe aber die entstandene lib-datei ins Projekt eingefügt und die Dll in den entsprechenden Ordner kopiert. Hier ist mal mein Code:

Dll:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Dies ist die Haupt-DLL.


#include "stdafx.h"

#include "Testklasse.h"

#include <iostream>

extern "C"
{
    class __declspec(dllexport) TestClass
    {
    public:
        int TestInt;
        void Show()
        {
            std::cout << TestInt;
        }
    };
}


Programm:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cstdlib>

class __declspec(dllexport) TestClass;

int main()
{
    TestClass i;
    i.TestInt = 3;
    i.Show();
    system("PAUSE");
    return 0;
}


Und ich habe in beiden Dateien

C-/C++-Quelltext

1
__declspec(dllimport)


oder keine Klassenspezifikation versucht

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

8

30.12.2007, 22:44

Das ist übrigens, in diesem Fall, totaler Unsinn:

C-/C++-Quelltext

1
2
3
4
extern "C"
{
//... 

}


Und was dein "Programm" darstellen soll, versteh ich ohnehin nicht.
@D13_Dreinig

9

31.12.2007, 00:00

wieso muss das Programm was darstellen? Ich will ja nur testen ob so eine Klasse in einer Dll funktioniert und ich hab keine lust dazu ein riesen Beispiel mit 500 Zeilen Code zu schreiben, um dann herauszufinden, dass es nicht funktioniert...

Trotzdem danke für den Tipp mit dem

C-/C++-Quelltext

1
 extern "C"


leider funktioniert es trotzdem nicht[/cpp]

rootnode

Frischling

Beiträge: 92

Wohnort: Aachen, Pontstraße

Beruf: Student

  • Private Nachricht senden

10

31.12.2007, 00:24

Der Fehler liegt in deinem Programmcode.

Dort musst du die Header-Datei der Klasse einbinden und nicht

C-/C++-Quelltext

1
class __declspec(dllexport) TestClass;

Werbeanzeige