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

Anonymous

unregistriert

1

15.10.2003, 22:18

Template in Klasse - __declspec(dllexport)

Quellcode

1
2
3
4
5
6
7
8
9
10
class FETUS_API _fetus_Base3D
{
protected:
                     ...

public:
    ...
    static tbList<_fetus_Base3D>    m_3DObjects;        // eine statische Liste auf alle erzeugten 3D-Objekte   
    
};


warning C4251: 'm_3DObjects' : class 'tbList<class _fetus_Base3D>' benoetigt eine DLL-Schnittstelle, die von Clients von class '_fetus_Base3D' verwendet wird


Hä! Ich versteh das nicht, denn das Problem besteht nur wenn die Liste sich in der Klasse befindet. Global gibts keine Probleme.
In der Dokumentation steht:

Quellcode

1
2
3
'Bezeichner': Klasse 'Typ' benötigt eine DLL-Schnittstelle, die von Clients von Klasse 'Typ2' verwendet wird

Die angegebene Klasse wurde ohne das Schlüsselwort __declspec(dllexport) deklariert.


Weiß jemand was das soll? Ich habe alles mögliche mit __declspec(dllexport) "geschmückt". Kanns sein dass ich ein Template nicht von der Klasse in der Klasse erzeugen darf?

:crying: :crying: :crying:

2

15.10.2003, 23:43

Doch du darfst ein Template in der Klasse Instanziieren (schreibt man das mit zwei "i"? ).

Hab die Fehlermeldung auch ein paar mal gehabt. Aber konnte sie immer Ignorieren.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Anonymous

unregistriert

3

17.10.2003, 19:30

Hmm, na gut, kann ich beim Code:

Quellcode

1
m_iCatalogIndex = _fetus_Base3D::m_3DObjects.GetNumEntries();


auch folgende Warnung ignorieren?

Quellcode

1
warning C4251: 'm_3DObjects' : class 'tbList<class _fetus_Base3D *>' benoetigt eine DLL-Schnittstelle, die von Clients von class '_fetus_Base3D' verwendet wird

4

17.10.2003, 23:02

Er will ja das Objekt Exportieren oder auch Importieren. Jeh nach dem halt. Das dumme ist das man ein Template weder Importieren noch Exportieren kann. Jedenfalls wüst ich nett wie. Die selbe Warnung kommt z.B. auch wenn man eine ganz Normale Struktur hat.

Davon ab. Eine Eigenschaft öffentlich, ganz Böse ;D 8)
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

NoName

Treue Seele

Beiträge: 118

Beruf: Student

  • Private Nachricht senden

5

18.10.2003, 12:28

Zitat

Quellcode

1
2
3
4
5
6
7
8
9
10
class FETUS_API _fetus_Base3D 
{ 
protected: 
                     ... 

public: 
   ... 
   static tbList<_fetus_Base3D>   m_3DObjects;      // eine statische Liste auf alle erzeugten 3D-Objekte    
    
};


Vielleicht liegt es daran, dass "_fetus_Base3D" in der Klassendeklaration (oder -definition ???) nicht verwendet werden darf, nur "_fetus_Base3D*".[/code][/quote]

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

18.10.2003, 12:32

Zitat von »"NoName"«

???

Super, sehr hilfreich. Jetzt weiß jeder, was Du nicht verstehst.

7

18.10.2003, 13:16

Hehe...nene es liegt schon an der Liste. Das Problem ist wie schon gesagt, daß das Template keine DLL Schnittstelle hat.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

NoName

Treue Seele

Beiträge: 118

Beruf: Student

  • Private Nachricht senden

8

18.10.2003, 17:32

@David: Sorry, war ein Versehen :) .

Anonymous

unregistriert

9

20.10.2003, 08:44

Wie jetzt

Kann ich also keine Templates in DLL´s zum exportieren verpacken?
Kann ich tbList (Tribase-Engine) also auch nicht exportieren?

10

20.10.2003, 17:09

Exportieren kann man ein Template nicht. Also auch nicht tbList. Das liegt einfach daran das man ein Template in der Header Implementiert.

Wie sich das jetzt mit deiner static Liste verhält kann ich nett sagen. Am besten ist, wenn du die Liste in deiner Klasse verpackst. Dann haste auch keine Probleme.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige