Massenmoderiertes Forum

Gelöste FrageC++ fremde DLL einbinden oder Dateien zwischen Programmen verschieben

0

Frage

Moinsen.

Ich bin nach dem TUT auf dieser webseite gegangen um eine Static DLL einzubinden: http://www.marquardtnet.info/cecke/tutorials.8/8_dll.html

Jedoch bekomme ich immer die meldung :

1>C:\Users\user\Documents\Visual Studio 2008\Projects\ReturnInput\DLL\MathFuncsDll.dll : fatal error LNK1107: Ungültige oder beschädigte Datei: Lesen bei 0x2B0 nicht möglich.

falls das nicht gelöst werden kann würde ich mich auf freuen wenn mir jemand eine Möglichkeit sagen kann wie ich daten zwischen 2 Programmen verschieben kann Ohne die HDD zu Involvieren mein Code in der DLL sieht so aus:

int *MyMathFuncs::AllinOne ()
{
    int Wert;
    int *Zeig = &Wert;
    return Zeig;
}

quasie einfach ich habe in dem Programm einen Zeiger auf einen INT wert.
In programm A verändere ich mittels des Zeigers den INT wert
in Programm B lese ich dauerhaft den Zeiger aus und bekomme so den INT wert von Programm A

Antworten
  • Alle 6 Kommentare anzeigen Alle 6 Kommentare anzeigen

  • Soetwas wie eine static DLL gibt es nicht. DLL steht für dynamic link library. Eine static dll wäre daher eine static dynamic link library. Das würde sich irgendwie widersprechen. Es gibt aber die Möglichkeit dynamic link libraries (also dlls) statisch einzubinden. Hier wird aber nicht direkt die DLL eingebunden, sondern eine eigens dafür generierte statisch Library (.lib), die alle Aufrufe an die DLL weiterleitet. Dieses Thema ist sehr umfangreich und das Tutorial, das du verwendet hast, beschreibt nicht einmal annähernd was man zu diesem Thema wissen sollte. Ich hoffe du hast auch noch andere Unterlagen zu diesem Thema. Auf jeden Fall stimmt etwas mit deiner Lib-Datei nicht

    nubli2011 vor 5 Monaten
  • Bezüglich deiner AllinOne Methode: Sieh dir mal das Thema IPC (inter process communication) und shared memory an

    nubli2011 vor 5 Monaten
  • Endschuldinge bitte meine Redensart mir ist schon klar was eine DLL ist und was sie Bedeutet ^^ ich meine mit Static in diesem fall das man sie Static in einem Projekt einbindet und nicht während der Runtime bei einem bestimmten Befehl.

    Fragesteller Venson vor 5 Monaten
  • Zur IPC da habe ich mir einige Beispiele angeguckt und entweder haben sie Gar nicht Funktioniert oder sie waren so dermaßen Schwer verständlich dass man das gleich vergessen kann giebt es da keine andere Methode?

    Fragesteller Venson vor 5 Monaten
  • IPC ist nur ein Oberbegriff. Es gibt zahlreichen Techniken um deine Anforderung zu erfüllen, aber definitiv keine bei dem ein Pointer an einen anderen Process übergeben werden kann. Die Addressräume der Prozesse sind untereinander abgeschottet. Dies ist für die Stabiltität des Betriebssystems sehr wichtig. Meiner Meinung nach würde deine Idee am ehesten der Technik von shared memory bzw. memory mapped files entsprechen, aber es gibt noch zahlreiche andere (Pipes, Message Queues, Sockets, Signals, WM_COPYDATA, Remoting (.NET),...). Microsoft hat ein einfaches Beispiel für shared memory http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(...

    nubli2011 vor 5 Monaten
Benutzerbild Venson

Vertrauen

2%

  • FragestellerFragesteller
1

Akzeptierte AntwortAkzeptierte Antwort

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(...

Hier ist die Antwort auf meine frage zu finden

Benutzerbild Venson

Vertrauen

2%

  • FragestellerFragesteller