Archive for the 'Windows' Category

wxWidgets für MinGW

Wie angekündigt, sorge ich nun für eine Anleitung, wie man wxWidgets kompiliert und in einem einfachen Programm verwendet.

Vorbereitung:

wxWidgets Version: 2.18.12
MinGW Version: 3.4.5
MSYS Version: 1.0.11
Netbeans Version: 6.8 mit Plugin für C/C++

wxWidgets 2.18.12 bzw. aktuelles Stable Release als tar.gz herunterladen und in einen beliebigen Ordner mit Schreibrechten für den aktuellen User entpacken.

wxWidgets Bibliotheken kompilieren

Der Einfachheit halber sollte man MinGW im Ganzen – vor allem mit gcc und g++ – installiert haben. Daneben benötigt man die MSYS Umgebung. Beides installiert man, um Fehler zu vermeiden unter C: bzw dem aktuellen Laufwerk mit Windows. Es empfielt sich danach die bin-Verzeichnisse von msys und MinGW in die PATH Umgebungsvariable aufzunehmen.

Configure und make:

Man sollte nun nachdem wxWidgets entpackt ist die MSYS eigene Shell msys.bat (welche man im Installationsordner von msys findet) starten. Dort wechselt man nun in das wxWidgets-Verzeichnis.

cd /C/Users/AUser/wxWidgets-2812

In dem jeweiligen Ordner sollte sich eine Datei mit dem Namen configure befinden. Auf der msys-Shell gibt man zum Vorbereiten der Quellen folgendes ein:

./configure --enable-optimise --enable-static --disable-shared --enable-monolithic

Dann erhält man eine im Code optimierte, statische Bibliothek. Wer anderes konfigurieren möchte erhält mittels ./configure --help Infos zu weiteren Optionen. Ist alles ohne Abbrüche über die Bühne gegangen, so beginnt man die Buildvorgang mit einem einfachen make auf der msys-Shell.

Die Bibliotheken:

Die Bibliotheken liegen innerhalb des lib-Ordners des wxWidgets-Verzeichnis und haben hier die Endung auf .a .

Weiter gehts auf der nächsten Seite:
Continue reading ‘wxWidgets für MinGW’

Frisch kompiliert: wxWidgets

Das vergangene Wochenende habe ich genutzt um den Einstieg in wxWidgets wagen. Dazu war es erst einmal nötig aus den Quellen die Bibliotheken von wxWidgets zu erstellen. Ich persönlich habe dafür den MinGW in Kombination mit MSYS benutzt. Mit Cygwin sollte es aber auch möglich sein. Das Erstellen war an sich kein Problem, allerdings ein einfacheres wxWidgets-Programm kompilieren brachte einige Schwierigkeiten mit sich. Oft konnte der eingebundene Header trotz gegebener Includeverzeichnisse nicht gefunden werden. War dieses Problem gelöst, tauchten plötzlich Probleme beim Kompilieren des Programms – z.B. dass die Definition von strdup nicht auffindbar sei, um einen Ausschnitt aus den über 100 Fehlern zu geben – auf.

Dass ich da noch alle Haare auf dem Kopf und nicht vor Zorn ausgerissen habe, ist ein Wunder. Schließlich habe ich dann einen aller letzten Versuch gestartet, der unter der Bedingung lief, wenn’s jetzt immer noch nicht nach all den Versuchen funktioniert, dann lasse ich es. Das regt mich zwar auch übel auf, weil ich dann gescheitert bin, aber ich kann mir nicht vorwerfen lassen, dass ich es nicht versucht hätte.

Zum Glück ließ sich mit dem letzten Versuch das Programm erstellen. Damit ich mich bei späteren Ansätzen nicht erneut ärgere, habe ich mir vorsorglich eine Anleitung geschrieben, die ich dann noch hier rauf stellen werde.

C++ und grafische Oberflächen

Wenn ich in C bzw. C++ unterwegs bin, dann meist im Bereich von Konsolenanwendungen – also Programme, die in einem kleinen, schwarzen Fenster mit weiser Schrift ausgeführt werden. Programme mit bunten Buttons und sonstigen grafischen Komponenten sind bei mir bisher Mangelware.
Mir fehlt in dieser Hinsicht ein Einstiegspunkt, vor allem weil es neben den durch (kommerzielle) IDE’s bereitgestellte GUI Toolkits auch viele eigenständige Pakete. Was Windows angeht, bin ich mir unsicher zwischen MFC [1] und WinForms [2]. Schließlich gibt es noch eine freie, für verschiedene Plattformen verfügbare Alternative namens wxWidgets [3].
In Java hatte sich diese Frage mir nie gestellt, da es schließlich entsprechende Bibliotheken in der Standardbibliothek von Java bereits gibt und man daher nicht nach externen Paketen suchen muss. Drei Wahlmöglichkeiten und ich stehe mittendrin. Ich weiß auch nicht, woran ich eine Entscheidung fest machen soll. Es sollte für den Einstieg nicht zu kompliziert sein.

[1] Wikipedia: Microsoft Foundation Classes
[2] Wikipedia: Windows Forms
[3] wxWidgets Projektseite

Bluescreen: Wie lang ist das her?

Just for fun grabe ich die alte Digitalkamera (eine Rollei dp300) aus, um deren Funktionalität als Webcam-Verschnitt zu testen. Die Treiber waren nach kleinerem Gefummel von der CD installiert. (Treiber für aktuellere Windows Versionen über XP hinaus, lassen sich auf der Herstellerseite leider nicht downloaden.) Dem Setup fehlt plötzlich eine JPEGCODE.dll, die sich aber auf der Installations-CD im Ordner driver\jpegcode findet.
Zum Aufnehmen eines Videos musste ich die Kamera vor einschalten in einen speziellen Modus (PC Kamera) geschalten, bevor ich mit dem VLC erste Bilddaten abgreifen konnte. Funktionierte auch so weit, nur die Auflösung von 160 zu 120 (Breite x Höhe) war da nicht so ganz berauschend. Ok, versuchste es mal mit anderen Einstellungen direkt an der Kamera, dachte ich mir da. Kamera wieder abgestöpselt, die Auflösung von 3.0M (fein) nach 5.0M (normal) und die ISO von 100 nach 200 gewechselt. Wieder im PC Kamera Modus die Rollei dp300 angeschlossen, angeschaltet und dann passiert’s: Bluescreen!

Bluescreen PAGE_FAULT_IN_NONPAGED_AREA

Windows zeigt mir mit einem PAGE_FAULT_IN_NONPAGED_AREA seine kalte Schulter

A problem has been detected and Windows has been shut down to prevent damage to your computer.
PAGE_FAULT_IN_NONPAGED_AREA
….

Ziemlich verdutzt vorm Läppi sitzend, gab ich von mir: „Bluescreen. Das hatte ich schon lange nicht mehr.“
Ist bei mir schon ein paar Jahre her, dass Windows mich derart hat abblitzen lassen.
Nach einem zweiten Versuch mit diesen Einstellungen und einem erneuten Bluescreen, blieb mir nix anderes übrig, die Einstellungen der Kamera wieder zurück zunehmen, was wieder zu einem normalen Funktionieren führte.

PowerShell: Von Ausgabeumleitung und Nicht-Textdateien

Heute Vormittag brauchte ich mal eine Auflistung aller Dateien in einem Verzeichnis. Die Auflistung wollte ich in Form einer Datei auf einer meiner Linux-Kisten weiter verwenden, um mit Hilfe des Kommandos diff Unterschiede zwischen den Dateiansammlungen festzustellen. Im entsprechenden Verzeichnis fütterte ich die PowerShell mit

ls | Select-Object name > dateien-A.txt

Die Befehlskette sorgt dafür, dass vom Verzeichnisinhalt nur Namen von Dateien und Ordnern angezeigt bzw. anschließend in eine Datei umgelenkt werden. (ls ist hier ein Alias auf Get-ChildItem – ich, die die Bash als Shell bevorzugt, greift da gewohnheitsmäßig zu ls.)
Das war auch kein großes Problem, erst als ich mit diff unter Linux mit der von der PowerShell erzeugten Datei versuchte zu arbeiten versuchte, stellte ich fest, dass etwas nicht stimmen musste. Für diff war die Datei von der PowerShell offensichtlich keine Textdatei.
Weil ich es geneauer wissen wollte, warf ich die Datei in einen Hexeditor, der mir dann etwa dieses Bild vermittelte: nach jedem Buchstaben folgte ein Nullbyte. Das ist bei einer gewöhnlichen Textdatei nicht der Fall.

Ich habe dann erst einmal umkonvertieren müssen. Das lässt sich mit Notepad++ sehr leicht erledigen. Wer sich für die exakte Bezeichnung für die Textformate interessiert, hier seien die Namen gegeben: UCS-2 Little Endian, was die PowerShell zu benutzen scheint, wenn die Standardausgabe umgelenkt wird und das ASCII Format, in dem die meisten herkömmlichen Textdateien erstellt werden.

Ich hake die Geschichte mit dem Satz „wieder mal etwas, worauf man achten muss“ ab.

Heute Vormittag brauchte ich mal eine Auflistung aller Dateien in einem Verzeichnis. Die Auflistung wollte ich in Form einer Datei auf einer meiner Linux-Kisten weiter verwenden, um mit Hilfe des Kommandos diff Unterschiede zwischen den Dateiansammlungen festzustellen. Im entsprechenden Verzeichnis fütterte ich die PowerShell mit

ls | Select-Object name > dateien-A.txt

Die Befehlskette sorgt dafür, dass vom Verzeichnisinhalt nur Namen von Dateien und Ordnern angezeigt bzw. anschließend in eine Datei umgelenkt werden. (ls ist hier ein Alias auf Get-ChildItem – ich, die die Bash als Shell bevorzugt, greift da gewohnheitsmäßig zu ls.)

Das war auch kein großes Problem, erst als ich mit diff unter Linux mit der von der PowerShell erzeugten Datei versuchte zu arbeiten versuchte, stellte ich fest, dass etwas nicht stimmen musste. Für diff war die Datei von der PowerShell offensichtlich keine Textdatei.

Weil ich es geneauer wissen wollte, warf ich die Datei in einen Hexeditor, der mir dann etwa dieses Bild vermittelte: nach jedem Buchstaben folgte ein Nullbyte. Das ist bei einer gewöhnlichen Textdatei nicht der Fall.

Ich habe dann erst einmal umkonvertieren müssen. Das lässt sich mit Notepad++ sehr leicht erledigen. Wer sich für die exakte Bezeichnung für die Textformate interessiert, hier seien die Namen gegeben: UCS-2 Little Endian, was die PowerShell zu benutzen scheint, wenn die Standardausgabe umgelenkt wird und das ANSI Format, in dem die meisten herkömmlichen Textdateien erstellt werden.

Ich hake es mit dem Satz „wieder mal etwas, wo man darauf achten muss“ ab.

Beta abgelaufen

Gestern lief offiziell die Beta von Office 2010 aus. Das bot schließlich einen Grund, die installierte Beta vom Rechner zu fegen. Winzigweich bot mir zwar an, Office 2010 zu kaufen, wäre da nicht eine gewisse Anzahl an Euronen fällig.
Im Ganzen ist Office 2010 wesentlich übersichtlicher als Office 2007, wo ich mich öfters mal beim Suchen der einen oder anderen Funktion ertappt habe. (Gesucht habe ich da meist nicht für mich, sondern für andere Leute, die da um Hilfe riefen.)

Ich hatte kein Problem damit die Beta vom Rechner zu tilgen, schließlich habe ich ja meine eigentliche Office-Suite OpenOffice zur Hand. Manche Programme wie OneNote habe ich erst gar nicht benutzt bzw. installiert. (Winzigweich, verzeih, dass ich hier keinen Trennungsschmerz empfinde. ;-) )

Zurück zum OpenOffice Format

Im Verlauf des Morgens habe ich einen Blick in meine Aufzeichnungen geworfen, die ich z.B. beim Konfigurieren irgendwelcher Server(software) anlege. Manchmal kann es sein, dass man die selben Schritte zu einem späteren Zeitpunkt erneut durchführen muss und die letzte Konfiguration schon länger zurückliegt.

Mir fiel dabei auf, dass viele Dokumente im Wordformat (.doc) angelegt waren. Normalerweise benutze ich OpenOffice für meine Schreibarbeiten und nicht wie man anehmen könnte, die Software von Winzigweich (a.k.a. Microsoft). Die Benutzung des Wordformates rührt daher, dass man mir eines Tages sagte: „Ich möchte, dass du umstellst.“
Zusätzlich wurde noch ein Rechtfertigungsgrund nachgesetzt, der etwa soviel beinhaltete, dass jemand anders sich über meine Dokumente, die ich dieser Person übergeben hatte, beschwert hätte. Entsprechende Klagen wurden mir allerdings nie gegenüber mir geäußert. Daher kann ich nicht eindeutig die Richtigkeit dieses Rechtfertigungsgrundes verifizieren.
Wenn ein Nicht-OpenOffice-Nutzer von mir ein Dokument bekam, erstellte ich eine Microsoft Office freundliche Version der Datei (eben .doc oder bei einer Tabelle .xls) oder ich exportierte die Datei in ein PDF-Dokument.

Mittlerweile frage ich mich, warum ich mich noch länger unterjochen lassen sollte. Meine gefertigten Anleitungen zum Eigengebrauch sieht sowieso kein anderer als ich. Beschwerden haben mir Nutzer anderer Office Programme nicht zugetragen. Unter dem Leitsatz „Back to OpenOffice“ kehrte ich zu meinem alten Standard zurück und dabei bleibe ich nun.

Linux und Windows User

Die Unix/Linux Variante:

$ who | grep -i blonde | head | nice | talk | date
cd ~ ; wine ; unzip ; touch ; strip ; finger ; mount ; gasp ; yes ; uptime ; umount ; make clean ;
sleep

Die Windows Variante:

Start -> Ausführen -> freundin.exe
Fehlermeldung von Windows: “freundin.exe konnte nicht gefunden werden. Stellen Sie sicher, dass Sie den Namen richtig eingegeben haben und wiederholen Sie den Vorgang”
Windows-User: “Mist, schon wieder ist die Alte weg!”

Buchgutschein verplant

Und zwar für folgende Bücher:

  1. Linux iptables – kurz & gut
  2. Linux – kurz & gut
  3. Windows Powershell – kurz & gut

Alle Bücher stammen aus dem O’Reilly Verlag. “Normale” Literatur war dieses Mal nicht mit von der Partie, da ich kein Exemplar erspäht habe, welches ich unbedingt lesen möchte. Stattdessen gibt’s Lesestoff für den kleinen Admin.

Von Vista auf Windows 7

Dieses “Windows-wechsel-dich”-Spielchen habe ich auch mal mitgemacht. Schließlich hatte ich ja mal die Möglichkeit angeboten bekommen Windows 7 zu benutzen und das Vista, dass ich auf einem Laptop hatte, war auch nicht ganz das Gelbe vom Ei.

Da ich ein Haufen Programme nutze – ich kann eine Liste von mindestens 30 Programmen aufzählen – dachte ich mir, ok machst du die Upgrade-Installation. Immerhin waren die Versionen passend zueinander. Nach zirka ein einhalb Stunden ist das dann auch über die Bühne gegangen.

Danach schaute ich erstmal, ob alles an Software läuft, was laufen soll. Virtual Box lief zwar, aber der Virtualisierungssoftware fehlten die Treiber, damit man seinen Gastbetriebssytemen Netzwerk zur Verfügung stellen kann. Mit der Neuinstallation des Programmes war dieses Problem erledigt.

Bei meinem Office 2010 Beta erlebte ich allerdings eine böse Überraschung. Word schmierte kurz nach dem Start ab, Outlook pflegte sich bei Klick auf den Reiter “Datei” in die Versenkung zu begeben. In beiden Fällen war immer eine kernel32.dll im Ordner C:/Windows/System32 beteiligt. Ich versuchte Office zu reparieren,  neu zu installieren und im Kompatibilitätsmodus von Windows XP und Vista laufen zu lassen. Nichts funktionierte. Zum Schluss habe ich mir Windows 7 in eine VM installiert und von dort die kernel32.dll kopiert und dann mittels Ubuntu Live CD über die andere drüber kopiert. Brachte auch nicht den ersehnten Erfolg.

WordFehlermeldung

Problemsignatur:
Problemereignisname: APPCRASH
Anwendungsname: WINWORD.EXE
Anwendungsversion: 14.0.4536.1000
Anwendungszeitstempel: 4af1d344
Fehlermodulname: kernel32.dll
Fehlermodulversion: 6.1.7600.16385
Fehlermodulzeitstempel: 4a5bdaad
Ausnahmecode: c0000005
Ausnahmeoffset: 0004f03d
Betriebsystemversion: 6.1.7600.2.0.0.256.48
Gebietsschema-ID: 1031

Zusatzinformationen zum Problem:
LCID: 1031
skulcid: 1031

Outlook Fehlermeldung

Problemsignatur:
Problemereignisname: APPCRASH
Anwendungsname: OUTLOOK.EXE
Anwendungsversion: 14.0.4536.1000
Anwendungszeitstempel: 4af1d60f
Fehlermodulname: kernel32.dll
Fehlermodulversion: 6.1.7600.16385
Fehlermodulzeitstempel: 4a5bdaad
Ausnahmecode: c0000005
Ausnahmeoffset: 0004f03d
Betriebsystemversion: 6.1.7600.2.0.0.256.48
Gebietsschema-ID: 1031

Zusatzinformationen zum Problem:
LCID: 1031
skulcid: 1031

Eigentlich hätte ich Office ignorieren können, weil zum Schreiben von Text nehme ich auch ganz gerne mein OpenOffice her, allerdings benötige ich zum Arbeiten ein Exchange-fähiges E-Mail Programm. Thunderbird und Co. scheiden da aus. Zusätzlich zu diesem Problem, war der Start von Windows 7 auf meinem Rechner ungewohnt langsam. Nach Eingabe des Passwortes dauerte es mehrere Sekunden, bis ich den Desktop zu sehen bekam.
Jetzt, nach der Neuinstallation, sind bisher keine solche extremen Aussetzer aufgetreten. Zwar ist nach der Installation von Windows 7 das Ganze in einer Installtions-Orgie gemündet, aber dafür habe ich nun aktuelle Software auf dem System.