Frage zu shared data segment
-
hallo, ich habe ein Frage. Und zwar weiß ich das ich mit
#pragma data_seg(".shared") variablen #pragma data_seg() #pragma comment(linker,"/SECTION:.shared,RWS")
ein Data Segment in der Dll sharen kann. Nur wie greife ich jetzt mit der Exe darauf zu? Hoffe die Frage ist nicht allzu blöde für die Experten!
-
Vielleicht hilft das:
-
das habe ich schon gesehen aber damit komm ich nicht so klar...
-
Die Daten einer EXE und einer von ihr aufgerufenen DLL liegen im selben Adressraum der EXE. Der Zugriff erfolgt jedoch über Funktionsaufrufe der DLL. Die aufgeführten #pragmas für den Compiler und den Linker sind kein Standard, das heisst nicht überall verfügbar.
-
Speicherverteiler schrieb:
Nur wie greife ich jetzt mit der Exe darauf zu?
Gleich wie du sonst auch auf die Variablen zugreifen würdest.
-
muss ich da dann irgendwie als extern deklarieren oder was
-
hustbaer schrieb:
Speicherverteiler schrieb:
Nur wie greife ich jetzt mit der Exe darauf zu?
Gleich wie du sonst auch auf die Variablen zugreifen würdest.
so ein blödsinn man kann nicht einfach so wie immer darauf zugreifen!
-
superfreak schrieb:
hustbaer schrieb:
Speicherverteiler schrieb:
Nur wie greife ich jetzt mit der Exe darauf zu?
Gleich wie du sonst auch auf die Variablen zugreifen würdest.
so ein blödsinn man kann nicht einfach so wie immer darauf zugreifen!
ach was du nicht sagst.
es könnte aber auch sein dass du einfach für nix gut bist und nur stuss schreibst.
-
ich bin verwirrt, geht es jetzt oder nicht? Muss ich dann die cpp von der dll bei der Exe inkludieren damit die Variablen bekannt sind oder wie genau
-
Wieso verwirrt? DLLs sind Funktionsbibliotheken! Die EXE ruft also Funktionen auf, über die es Zugang auch von anderen Funktionen dort abgelegte Daten erhält. Wenn Dein Compiler/Linker ein shared data segment mitmacht geht der Zugriff sogar über Prozessgrenzen hinaus. Charles Petzold hat hierfür in seinem Buch zur Windows-Programmierung ein Beispiel gezeigt. Dein Problem scheint die Handhabung von DLLs zu sein? Die DLL muss die Funktionen exportieren und die EXE diese importieren. Das tool IMPLIB (gehört zu jedem Compiler) macht aus der fertigen DLL eine Importbibliothek für die EXE.