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

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

41

25.06.2007, 15:39

ist das mit den deklarationen und den definitionen nicht genau andersrum?

Definition in der Klasse und Deklaration ist dann der Funktionscode?


Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

42

25.06.2007, 15:40

Zitat von »"Faule Socke"«

ist das mit den deklarationen und den definitionen nicht genau andersrum?

Definition in der Klasse und Deklaration ist dann der Funktionscode?


Socke


Nö, seit wann?
@D13_Dreinig

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

43

25.06.2007, 15:45

Zitat von »"David_pb"«

Nö, seit wann?


Dachte nur... klingt für mich irgendwie logischer, da die definition ja meiner meinung nach VOR der dekaration kommt... und der funktionsprototyp wird ja auch definition geannnt. komisch...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

44

25.06.2007, 15:47

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
class foo; // Klassedeklaration

class foo  // Klassendefinition

{};
void bar( int ); // Funktionsdeklaration

void bar( int x ) // Funktionsdefinition

{}

int x; // Variablendeklaration & gleichzeitig Definition

extern int x; // Variablendeklaration


Klar soweit? ;-)
@D13_Dreinig

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

45

25.06.2007, 15:49

ja wenn du das sagst.

EDIT
Du hast recht. Google sagt das auch. das wird ein spass die ganzen komemntare umzuschreiben.......



Socke

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

46

29.06.2007, 16:49

Also:

ich hab inzwischen das gesamte projekt überarbeitet und warscheinlcih größtenteils auf const-correctness umgestellt...

Auserdem hab ich alle Templateklassen so umgeschrieben, dass sie nur noch im header sind.

Das Problem bei der sache ist das jetzt ungefähr 1600(!) Zeilen output kommen. Nur warnungen.
Hier mal eine von denen:

Quellcode

1
2
3
4
5
6
7
8
------ Erstellen gestartet: Projekt: FastStream, Konfiguration: Release Win32 ------
Kompilieren...
fsXMLFile.cpp
z:\engines\faststream\include\fsIni.h(36) : warning C4251: 'fs::Ini::CIni::m_sIniFile': class 'fs::String::CString<T>' erfordert eine DLL-Schnittstelle, die von Clients von class 'fs::Ini::CIni' verwendet wird
        with
        [
            T=char
        ]


Das sind dann insgesamt ca 160 mal.

Was mache ich falsch? ich kann die klasse ja nciht exportieren...


Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

47

29.06.2007, 16:56

Was steht denn in so einer betreffenden Zeile? Hast du das __declspec( export ) rausgenommen?
@D13_Dreinig

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

48

29.06.2007, 17:49

Zitat von »"David_pb"«

Was steht denn in so einer betreffenden Zeile? Hast du das __declspec( export ) rausgenommen?


Ja das hab ich rausgenommen. Wenn ich es rein tue, gibt es keine warnungen. dann kommen beim verwenden der dll allerdings kompilerfehler(nicht für mport zulässig).

Hier mal die betreffende Zeile:

C-/C++-Quelltext

1
2
3
4
5
    class FASTSTREAM_API CIni
    {
    private:
        // Variablen

        String::CString<char>   m_sIniFile; // In dieser Zeile kommt die Warnung


Und noch ein bisschen:

C-/C++-Quelltext

1
2
3
4
5
    // --- Variablen -----------------------------------------------

    String::CString<char>       m_Buffer;       // <-- Warnung!!

    SLogParserParams            m_Params;
    SScriptInfo                 m_ScriptInfo;
};



Socke

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

49

29.06.2007, 19:40

Achso ja. Es können nur Definitionen exportiert werden und die Verwendung des Templates ist keine Definition. Aber im Grund kannst du die Warnung ignorieren, sollte egtl keine Probleme geben.

Wenn dich die Warnung stört kannst du ihn entweder ausschalten, per:

C-/C++-Quelltext

1
#pragma warning( disable: 4251 )


Oder schöner:

C-/C++-Quelltext

1
2
3
4
5
class FASTSTREAM_API CIni
{
private:
      template class FASTSTREAM_API String::CString< char >;
      String::CString<char>    m_sIniFile;


grüße
@D13_Dreinig

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

50

29.06.2007, 23:13

Oh ich bevorzuge dann wohl die erste methode.(Hab ich jetzt beim überarbeiten auch benutzt.) Die Warnungen zu ignorieren macht keine Probleme.

Socke

Werbeanzeige