23. juni 2009 - 12:47Der er
10 kommentarer og 1 løsning
Redirect stdout fra unmanaged DLL til textbox i en form???
jeg sidder med et problem jeg har en dll der er skrevet i c/c++. Her skriver jeg en masse status ud med printf, hvordan får jeg det Redirect op til min managed code på en simpel måde, og helst ved uden at ændre i dll´en.
jeg har fået Redirect Console.WriteLine, så den kan skrive i en textbox på en form, jeg troede så at alt stdout så ville komme den vej men ak nej.
Hvis den DLL er static linked, saa mener jeg ikke at du kan goere det.
Men er den dynamic linked (og det er den nu nok), saa kan du: - lave en ny DLL som redirecter stdout til en pipe og kalder den foerste DLL - kalde den DLL fra dit C# program og bagefter hente data fra den anden DLL som bare laeser fra pipe'n
undskyld jeg ikke lige har fået svaret den var lige gået i glemme bogen. har heller ikke lige fået arbejdet videre med mit problem, da der har været andet der lige skulle laves først.
men min dll er static linken så det tegner jo ikke så godt jf. din beskrivelse.
men kan det ikke lade sig gøre at lave en callback til min c# applikation så hver gang operationen printf bliver brugt i min c dll så ved hjælp af nået mackro trylleri bliver sprintf benyttet til at ligge teksten i et char array også bliver der kaldt en operation der eksekver callbacket med dette array som agument...
arne_v jeg ved ikke om du kan hjælpe mig en sidste gang...
for når jeg har implementeret din kode i mit system får jeg en Exception smidt i hoved CallbackOnCollectedDelegate med denne beskrivelse
Der blev foretaget et tilbagekald af en spildopsamlet stedfortræder af typen 'ASIM_PCIwrapper!ASIM_PCIwrapper.ASIMController+PrintCallBack::Invoke'. Det kan medføre programnedbrud, beskadigelser og tab af data. Når stedfortrædere sendes til ikke-administreret kode, skal de holdes levende af det administrerede program, indtil det garanteres, at de aldrig kaldes igen.
ved du hvordan jeg holder den ikke-administreret kode i live fra den administrerede del...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.