Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » eine dll von 2 programmen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
09.10.2006, 18:31 Uhr
~pitrie
Gast


hi,

ich schreibe gerade meine diplomarebit und habe folgendes problem.

ein programm x benutzt eine dll namens xy.dll.
nun möchte ich dieser xy.dll daten zur verfügung stellen, die aus meiner exe-anwendung kommen.
jedoch wenn ich die xy.dll in meine applikation einbinde, habe ich ja eine ganz andere instanz dieser dll und die daten könnne nicht zum programm x gelangen.

kann ich in den sourcen der dll was ändern, damit die dll einmal im speicher geladen wird?
habe da was bei wikipedia gefunden, dass es des gibt!

wenn nicht .. was für möglichkeiten habe ich sonst noch?

vielen dank schonmal
gruß
pitrie
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.10.2006, 19:49 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Also wenn ich dich richtig verstanden habe willst du das alle Programme die deine DLL nutzen bei bestimmten Variablen die selbe "Instanz" nutzen, also die Variable bei allen Programmen den selben Wert hat?

Das geht indem du diese Variablen in einem Shared Datasegment anlegst. Wie das genau geht kann ich dir morgen sagen wenn ich dran denke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.10.2006, 20:07 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von Guybrush Threepwood:

Das geht indem du diese Variablen in einem Shared Datasegment anlegst. Wie das genau geht kann ich dir morgen sagen wenn ich dran denke


C++:
#pragma data_seg(".MYDATA")

//Hier deine initialisierten Daten

#pragma data_seg()
#pragma comment(linker, "/section:.MYDATA,rws")



Gruß Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.10.2006, 20:08 Uhr
~pitrie
Gast


hi,

ja, so in etwa.
ich schreibe ein programm, dass ein anderes programm mit daten füttern soll. jedoch über die benutzte dll und net direkt ins programm, da mehrere die dll benutzen und es dann egal ist, welches programm man verwendet.

aber im prinzip stimmt es schon. und ich kann die dll verändern.

wäre klasse wenn du vielleicht noch etwas schreiben könntest.
schaue jetzt auch noch etwas :-)

vielen dank schonmal
gruß pitrie
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.10.2006, 20:13 Uhr
~pitrie
Gast


ja super... danke spacelord!

weil du "initialisierte daten" geschrieben hast...
reicht da nicht nur ne definition? würde da gerne eine queue reinstecken!

gruß
pitrie
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
09.10.2006, 20:18 Uhr
pitrie



also eine queue dann dynamisch von außen füllen und dann wird sie intern geleert!
--
Gruß Steff
___
Der Optimist sieht in jedem Problem eine Aufgabe.
Der Pessimist sieht in jeder Aufgabe ein Problem.
http://autoexport.sunbird-kalender.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
09.10.2006, 20:46 Uhr
Spacelord
Hoffnungsloser Fall


Hab es gerade selber mal getestet,mit Dll´s ist das immer so ne Sache .
Also mit nem expliziten Konstruktoraufruf landet die deque in dem shared Segment.
Ohne wird MYDATA nicht angelegt und die deque in den Bereich mit den uninitialisierten Daten geschoben.

C++:
#pragma data_seg(".MYDATA")
    std::deque<int> _deque = std::deque<int>();
#pragma data_seg()
#pragma comment(linker, "/section:.MYDATA,rws")



Um Problemen von vorneherein aus dem Weg zu gehen solltest du versuchen,nach aussen, mit ner reinen C Schnittstelle zu arbeiten.

Gruß Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.

Dieser Post wurde am 09.10.2006 um 20:51 Uhr von Spacelord editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
11.10.2006, 17:00 Uhr
pitrie



kann ich eigentlich irgndwie auch in dem shared memory-part speicher reservieren?
wenn ich da drin nur ein zeiger habe, der auf den speicher der anderen dll-instanz zeigt, bekomme ich ja ein access violation!
irgendwie muss ich in dem teil die queue anlegen, aber auch in C (kein C++)!

gruß
pitrie
--
Gruß Steff
___
Der Optimist sieht in jedem Problem eine Aufgabe.
Der Pessimist sieht in jeder Aufgabe ein Problem.
http://autoexport.sunbird-kalender.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
11.10.2006, 21:55 Uhr
Spacelord
Hoffnungsloser Fall


Eventuell mit GlobalAlloc ?
Das ist schwer zu sagen.Eventuell solltest du auch nochmal deinen ganzen Ansatz überdenken? Vielleicht ist ein Service eher das was du brauchen würdest?
Ich kann dir nur den Tip geben mal in eurer Uni-Bibliothek nach Jeffrey Richters "Windowsprogrammierung für Experten" zu suchen.
Darin werden alle Themen in dieser Richtung eingehend behandelt.

Gruß Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
13.10.2006, 07:03 Uhr
pitrie



hmmm ... habs auch schon mit dem shared memory aufgegeben!
wie sieht es denn mit named pipes aus?
habs mal angefangen, funktioniert aber noch nicht!
ist das eine gute alternative? damit habe ich dann auch keine zugriffsprobleme mehr, wer gerade wann auf den speicher zugreift!
müsste doch gehen, oder?
das programm (c#) erstellt die pipe!
die dll (c) liest die pipe!

gruß
pitrie
--
Gruß Steff
___
Der Optimist sieht in jedem Problem eine Aufgabe.
Der Pessimist sieht in jeder Aufgabe ein Problem.
http://autoexport.sunbird-kalender.de
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: