Hallo, ich habe eine Konsolenanwendung mit cygwin geschrieben. Diese nutzt unter anderem die "readline" Library weil eine Art Kommandozeile innerhalb der Anwendung existiert. Starte ich dieses Programm auf meinem Rechner, funktionieren die Cursortasten und DEL wie gewünscht. Wenn ich die Anwendung weitergebe, muß ich die Anwendungs-EXE und die cygwin1.dll weitergeben, da auf den Zielrechnern kein Cygwin installiert ist. Das ist auch nicht gewünscht. Leider funktionieren auf dem Zielrechner die Cursortasten und auch DEL nicht mehr. Bei DEL kommt z.B. ein Blank. Cursor rechts/links macht auch Blödsinn. Das gleiche Fehlverhalten habe ich auch auf meinem Rechner, wenn ich die Cygwin1.dll in das Verzeichnis kopiere, wo das Executable vom make erstellt wird. Entferne ich die DLL dort und sie muß über den PATH gefunden werden funktioniert alles richtig. Ich habe schon die Suchmaschienen befragt, finde auch Hinweise auf die '.inputrc'-Datei aber wo muß diese liegen, wenn kein Cygwin installiert ist, sondern nur die cygwin1.dll existiert? Hat jemand einen hilfreichen Hinweis? Im Anhang ein sehr kurzes Testprogramm. Nach Aufruf gibt es in der Anwendung eine "Konsole", man kann Zeugs eintippen was nach Enter wieder ausgegeben wird. Jetzt kann man Cursor rauf/runter verwenden um z.B. in der History zu blätten. Aber DEL und Cursor rechst/links funktioniert nicht. Nur wenn Cygwin ordnungsgemäß installiert ist. Kompilieren mit gcc bdc1.c -o bdc1.exe -lreadline Danke für Eure Hilfe.
Da Cygwin eine Art Linux-Emulator ist, könnte es sein, daß es termcap verwendet, und das auf Deinem Rechner anders installiert/konfiguriert ist als auf dem Rechner, auf dem Du Dein Programm mit DLL laufen lassen willst. Termcap ist ein Fossil aus dem Unix-Ursumpf, mit dem unterschiedliche Terminalbefehlssätze standardisiert werden (VT100, TVI52, Cybernex, whatever), um halbwegs hardwareunabhängig Bildschirmausgaben machen zu können.
termcap ist auf dem Zielrechner garnicht installiert. Die Anwendung, die ich programmiere, gibt es schon länger und funktionierte bisher klaglos. Nur jetzt seitdem ich die readline Lib. verwednen will ist das Problem mit den Cursortasten da. Vorher gab es auch keine Möglichkeit irgendetwas einzugeben, da war alles über Kommandozeilenparamter zu steuern.
http://web.mit.edu/cygwin/cygwin_v1.3.2/usr/doc/Cygwin/readline-4.2.README readline uses termcap functions, but will link to the ncurses library (which provides emulated versions of these termcap functions). Ich würde von daher vermuten, dass du auf dem Zielrechner NCurses benötigst, welches wiederum auf die terminfo- oder termcap-Datenbank zurück greift. Die brauchst du also auf jeden Fall auch noch auf dem Zielrechner.
RTFM schrieb: > Ich würde von daher vermuten Danke, muß mal schauen, welche DLLs ich noch brauche dafür. Werde ich morgen machen.
900ss D. schrieb: > RTFM schrieb: >> Ich würde von daher vermuten > > Danke, muß mal schauen, welche DLLs ich noch brauche dafür. Werde ich > morgen machen. ich glaube cygcheck hilft dir dabei. wenn ich mich recht erinnere listet das dependencies auf.
Ich habe einen Dependency-Walker genommen um zu sehen, welche DLLs angezogen werden. Siehe Anhang. Unter dem KERNEL32.DLL stehen nur Windows-DLLs. Dann habe ich eine Rechner ohne Cygwin-Installation genommen und folgende Konfiguration getestet: 1) Nur EXE + cygwin1.dll Es wurde CYGREADLINE7.DLL vermißt 2) Nur EXE + cygwin1.dll + CYGREADLINE7.DLL Es wurde CYGNCURSESW-10.DLL vermißt 3) Nur EXE + cygwin1.dll + CYGREADLINE7.DLL + CYGNCURSESW-10.DLL Anwendung startet, aber die Cursortasten + DEL funktionieren immer noch nicht. Also das alte Problem. Da ich öfter Hinweise gefunden hatte, dass von cygwin die .inputrc genutzt wird um Tasten zu "übersetzen", vermute ich das Problem in die Richtung. Aber wo soll die .inputrc hin? In dem Verzeichnis der EXE hilft sie nicht. Außerdem ist es auch nur eine Vermutung. Wenn jemand etwas mehr weiß wäre ich um Hinweise dankbar.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.