Computer Community

Lösungssuche (neue Beiträge, gelöst)C++ 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

Lösung schreiben
  • 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 235vor 5 Jahren
  • Bezüglich deiner AllinOne Methode: Sieh dir mal das Thema IPC (inter process communication) und shared memory an

    nubli2011 235vor 5 Jahren
  • 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.

    Thread ErstellerVenson 225vor 5 Jahren
  • 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?

    Thread ErstellerVenson 225vor 5 Jahren
  • 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 235vor 5 Jahren
  • 1 weitere Kommentare anzeigen

Venson

Reputation

225

  • Thread ErstellerThread Ersteller
  • 316 Beiträge
  • registriert vor 9 Jahren
+1

Akzeptierte LösungAkzeptierte Lösung

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

Hier ist die Antwort auf meine frage zu finden

Venson

Reputation

225

  • Thread ErstellerThread Ersteller
  • 316 Beiträge
  • registriert vor 9 Jahren
StartseiteLösung schreiben

1 - 2 von 2

Gehe zur Seite

Seite 1 von 1