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

LGs0pHT

Frischling

  • »LGs0pHT« ist der Autor dieses Themas

Beiträge: 19

Wohnort: Hamburg, Germany

  • Private Nachricht senden

1

06.10.2004, 19:35

STL+DLL+class

Hi, cool der Umbau - war lange nicht mehr hier.

Nachdem ich nun meine Texturmanager Klasse größtenteils fertig gecodet habe, will der MSVC6 net mehr kompilieren.

Das Problem, womit er wohl net klarkommt ist, dass ich eine stl list<eigene_struct> innerhalb meiner klasse unter private definiert habe.

warning C4251: 'lTexList' : class 'std::list<struct leTextureEntry,class std::allocator<struct lTextureEntry> >' needs to have dll-interface to be used by clients of class 'leTexture'

Hab ich mich voll gefreut dass der so zuvorkommend war, und gleich mal dllimport reingehauen. Dann wiederum war der Fehler, dass da keiner nötig ist.

Bei MS habe ich auch noch einen Artikel gefunden, der hat aber leider net funktioniert.

Tja... So kanns kommen ;(

P.S.: Ich habe eure Suchfunktion verwendet.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

2

06.10.2004, 20:06

Hi,

DLLs sind "reine" C-Libs und können michts mit dynamischen Speicherobjekten (wie z.B. die STL welche benutzt) nix anfangen, dort gehen Daten verloren oder landen sonst wo.

- Patrick

LGs0pHT

Frischling

  • »LGs0pHT« ist der Autor dieses Themas

Beiträge: 19

Wohnort: Hamburg, Germany

  • Private Nachricht senden

3

06.10.2004, 20:33

Hm... Danke für die Antwort. Es ist mir jetzt gelungen mithifle des MS Artikels einiges rauszuhauen, dennoch gibt es am Ende diverse LNK2001 fehler, was wohl auch mit der speziellen DLL+STL Problematik zusammenhängt. Es soll aber möglich sein

Viel schlimmer: Was mache ich jetzt? Muss ich jetzt ne eigene List Klasse entwickeln oder wie?

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

06.10.2004, 20:35

naja manchmal gehts mit tricksen, ansonsten pointer.

z.B. sowas:

C-/C++-Quelltext

1
void drawArray (const vector4d *vertices, unsigned int num_vertices);

LGs0pHT

Frischling

  • »LGs0pHT« ist der Autor dieses Themas

Beiträge: 19

Wohnort: Hamburg, Germany

  • Private Nachricht senden

5

06.10.2004, 20:57

So funtzt nu, ich ignoriere die Warnung einfach.

So lange der Anwender mit der gleichen STL Version wie ich arbeitet, passiert ja nix.

Und wenn ich doch noch Probleme kriegen sollte, dann werde ich die list einfach in eine struct tun, die nur in der cpp intern drinne ist, und dann mit einem pointer in der h darauf verweisen (pimpl idiom: http://www.gotw.ca/gotw/024.htm)

Aber es wär ja auch n Ding, wenn man in einer DLL kein STL usen kann. Ich mein, wie laufen denn die ganzen Games dann?

greetz, lg.

6

07.10.2004, 15:58

Man kann die STL in DLL's verwenden. Das ist soweit kein Problem. Man sollte allerdings darauf achten, das man den Zugriff über Methoden kapselt. Solange du die intern nutzt ist alles np.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige