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

Nik94

Frischling

  • »Nik94« ist der Autor dieses Themas

Beiträge: 18

Wohnort: Solingen

Beruf: Schüler

  • Private Nachricht senden

1

06.01.2013, 10:58

Globale Variable aus DLL in einer anderen DLL nutzen?

Hallo zusammen,
Ich möchte in einem meiner Projekte eine globale Variable, welche ich in einer DLL definiere und initialisiere, in einer anderen DLL nutzen. Dazu habe ich die Variablke in den entsprechenden headern als

C-/C++-Quelltext

1
extern DLL_EXPORT CLogfile* g_pLogfile
definiert, wordei DLL_EXPORT mein exportmakro ist. Des weiteren habe ich, wie üblich, meine Include-und Linkerverzeichnisse angepasst. Dennoch bekomme ich vom Linker eine Fehlermeldung, dass das Objekt "g_pLogfiler" nicht aufgelöst sei.
Was mich jedoch verwundert, ist die tatsache, dass dieser Fehler nicht auftritt, wenn ich die DLL, in welcher die Variable initialisiert wird, in eine exe einbinde.
Nach einiger zeit bin ich bei google zwar darauf gestoßen, dass es die Möglichkeit des Anlegens von Shared Data Segments (#pragma data_seg(...)) unter VS2012 gibt, was, soweit ich es verstanden habe, jedoch nur bewirkt, dass eine DLL, welche in mehreren Insatnzen läuft, auf diesen Sopeicher zugreifen kann, und keine anderen DLL's.
Ich hoffe, dass mir hier jemand weiterhelfen kann bzw. sagen kann, ob ich das mit den shared segments richtig verstanden habe.

LG
Niklas

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

06.01.2013, 12:22

"extern" brauchst du nicht.
Der Code, den du gezeigt hast: wo steht der? Im DLL-Projekt oder da, wo die DLL benutzt wird?

Nik94

Frischling

  • »Nik94« ist der Autor dieses Themas

Beiträge: 18

Wohnort: Solingen

Beruf: Schüler

  • Private Nachricht senden

3

06.01.2013, 14:08

die definition mit "extern" steht in einem Header, der in beiden DLL's eingebunden wird:
DLL 1:

C-/C++-Quelltext

1
2
3
4
5
6
// Logfile.h
extern DLL_EXPORT CLogfile* g_pLogfile

//Logfile.cpp
#include "Logfile.h"
g_pLogfile = new CLogfile("Logfile.txt");


DLL2

C-/C++-Quelltext

1
2
3
4
// main.cpp
#include <Logfile.h>
//...
g_pLogfile->Write("Message");

Werbeanzeige