# qrcode.exe 1.0.0 – QR-Generator mit libqrencode

Dieser Windows-x86-Adapter verwendet Kentaro Fukuchis **libqrencode 4.1.1** als austauschbare DLL. Die EXE ist ein eigener MIT-Adapter.

## Einbau

`qrcode.exe` **und** `libqrencode.dll` zusammen in das Programmverzeichnis kopieren. Aufruf:

```text
qrcode.exe "QR-INHALT" "C:\Ziel\qrcode.bmp"
```

Kein PowerShell, Python, Java, MSYS2 und kein zusätzlicher Laufzeit-Installer zum Ausführen erforderlich. Die Dateien verwenden die Windows-Systembibliotheken KERNEL32, MSVCRT und SHELL32. Der Compiler ist nur zum Neuaufbau erforderlich.

Das Paket wurde in `C:\ezbookai2\lizenzen` bereitgestellt. Andere bereits installierte Programmkopien auf D: werden durch dieses Paket nicht automatisch ersetzt.

## Kompatibilität

- Standardaufruf: genau zwei Argumente, Inhalt und Ausgabedatei.
- Inhalt über die Windows-ANSI-Codepage der C-Laufzeit. Vorhandene EPC-Datensätze mit Zeichensatzkennung `2` werden nicht automatisch umkodiert oder repariert.
- Fehlerkorrektur M, automatische QR-Version, Groß-/Kleinschreibung erhalten, 8 Pixel pro Modul, unkomprimierte 24-Bit-BMP, von oben nach unten gespeichert.
- **Kein weißer Rand im BMP**. Im fertigen Dokument muss die QR-Ruhezone von mindestens vier Modulen weiß und frei bleiben. Bestehende Bildabmessungen werden nicht durch einen zusätzlichen Rand vergrößert.
- Mindestens 40 Inhaltsbytes; kürzere Inhalte liefern Fehlercode 6.
- Unicode-Ausgabepfade unterstützt. Neue Ausgabe erst nach vollständigem Schreiben veröffentlicht. Vorhandene Ziele werden bei erfolgreicher Erzeugung ersetzt und bleiben bei Fehlern erhalten.
- Optional: `qrcode.exe --utf8 "INHALT" "ausgabe.bmp"` kodiert den Inhalt als UTF-8. Nur verwenden, wenn die Zeichensatzangabe im QR-Datensatz dazu passt, beispielsweise EPC-Kennung `1`. Dieser Schalter wird von bestehenden Aufrufern nicht automatisch verwendet.
- `--help`, `--version` und `--license-info` liefern Informationen ohne Pause oder Fensterdialog.

Fehlercodes: 0 erfolgreich; 1 Speichermangel im Adapter; 2 Ausgabe konnte nicht erstellt/ersetzt werden; 3 QR-Erzeugung bzw. Laden der passenden DLL fehlgeschlagen; 4 falsche Argumentanzahl; 5 leerer Inhalt; 6 Inhalt kürzer als 40 Bytes. Bei Erfolg wird ohne zusätzliche Optionen nichts ausgegeben.

## Lizenzen und Weitergabe

- Neuer Programmrahmen: MIT, Copyright (c) 2026 Thomas Zeh, siehe `LICENSE-MIT.txt`.
- libqrencode 4.1.1: LGPL-2.1-or-later, Copyright Kentaro Fukuchi und Mitwirkende, siehe `COPYING-libqrencode.txt` und originale Quellköpfe/README.
- MinGW-w64/GCC-Laufzeitanteile: siehe `MinGW-Lizenzen`. Es wird keine GCC-/MSYS2-Toolchain mit dem ausführbaren Programm installiert.

Kommerzielle Nutzung ist nach diesen Lizenzbedingungen ohne Lizenzgebühren möglich. Die DLL bleibt separat austauschbar; das Programm lädt `libqrencode.dll` ausschließlich aus dem Verzeichnis seiner EXE. Eine ABI-kompatible geänderte DLL darf verwendet werden. Für die Fehlersuche an Bibliotheksänderungen werden durch die MIT-Lizenz keine zusätzlichen Reverse-Engineering-Verbote aufgestellt. Diese Rechte dürfen durch die Lizenzbedingungen einer übergeordneten Anwendung nicht unzulässig eingeschränkt werden.

Bei Weitergabe die Hinweise, Lizenztexte sowie das **passende vollständige Quellpaket `qrcode-1.0.0-libqrencode-4.1.1-Quellen.zip`** mit gleichwertigem Zugang am selben Downloadort bereitstellen; offline zusammen mitliefern. Es enthält die unveränderten offiziellen Bibliotheksquellen, den neuen Adapter, Ressource und vollständige Buildanweisung. Es wird kein dreijähriges schriftliches Quellcodeangebot abgegeben.

Die Bibliotheksquellen sind unverändert. Build-Konfiguration: Windows x86, ohne pthread, PNG, SDL oder Iconv; Versionsmakros 4.1.1, HAVE_STRDUP=1 und STATIC_IN_RELEASE=static per Compileroption, wie für den Release-Build benötigt.

## Neu bauen

Voraussetzung: MinGW-w64-GCC für Windows x86, beim erstellten Paket MSYS2 GCC 14.2.0 Rev2. Das ursprüngliche Quellarchiv aus `upstream/libqrencode-4.1.1.zip` zuerst in denselben Ordner entpacken, falls der Unterordner fehlt. `build.ps1` aus diesem Projektordner ausführen; alternativ mit `-Toolchain` den passenden Compilerpfad angeben. Die daraus entstehenden Programme liegen unter `dist`.

Die PowerShell-Datei enthält sämtliche Compiler-/Linkeroptionen. Die DLL wird separat gebaut; der Adapter verwendet `LoadLibraryExW` und `GetProcAddress`, statt Bibliothekscode statisch einzubinden. Der Compilerpfad wird nur während des Builds im Prozess gesetzt. Das Skript verändert keine globale Installation.

## Herkunft

Offizielles Projekt: https://fukuchi.org/works/qrencode/

Offizieller Quellstand: https://github.com/fukuchi/libqrencode/tree/v4.1.1

Bezugsarchiv: https://github.com/fukuchi/libqrencode/archive/refs/tags/v4.1.1.zip (27.10.2026).

Die eigene Anwendung muss die QR-Inhalte fachlich korrekt zusammensetzen. QR-Lesbarkeit allein prüft weder IBAN/BIC noch Betrag, Zahlungsempfänger oder EPC-Konformität.
