Added c++ version to code base.

This commit is contained in:
2026-05-22 19:05:24 +02:00
parent b60f84e519
commit 197862fc36
6 changed files with 1228 additions and 1 deletions
+28
View File
@@ -0,0 +1,28 @@
CXX ?= g++
PKG_CONFIG ?= pkg-config
PREFIX ?= /usr/local
TARGET := binaryconverter
SRC := src/binaryconverter.cpp
BUILD_DIR := build
BIN := $(BUILD_DIR)/$(TARGET)
CXXFLAGS ?= -O3 -DNDEBUG -march=native
CPPFLAGS += -std=c++17 -Wall -Wextra -Wpedantic -D_FILE_OFFSET_BITS=64
LIBCRYPTO_CFLAGS := $(shell $(PKG_CONFIG) --cflags libcrypto 2>/dev/null)
LIBCRYPTO_LIBS := $(shell $(PKG_CONFIG) --libs libcrypto 2>/dev/null)
LDLIBS += $(if $(LIBCRYPTO_LIBS),$(LIBCRYPTO_LIBS),-lcrypto)
.PHONY: all clean install
all: $(BIN)
$(BIN): $(SRC)
@mkdir -p $(BUILD_DIR)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(LIBCRYPTO_CFLAGS) -o $@ $< $(LDFLAGS) $(LDLIBS)
install: $(BIN)
install -Dm755 $(BIN) "$(DESTDIR)$(PREFIX)/bin/$(TARGET)"
clean:
rm -rf $(BUILD_DIR)
+65
View File
@@ -0,0 +1,65 @@
# BinaryConverter Native fuer Linux
Diese Variante ist eine native C++17-Implementierung fuer Linux, getestet fuer Arch Linux. Sie ist formatkompatibel zur vorhandenen C#/.NET-Framework-Version: Encode-Dateien koennen zwischen Windows und Linux gegenseitig verarbeitet werden.
## Voraussetzungen
Arch Linux:
```bash
sudo pacman -S --needed base-devel openssl pkgconf
```
## Build
```bash
cd native
make
```
Die Binary liegt danach hier:
```text
native/build/binaryconverter
```
Optional generischere Binary ohne CPU-spezifische Optimierung:
```bash
make clean
make CXXFLAGS="-O3 -DNDEBUG"
```
## Nutzung
Encode:
```bash
./build/binaryconverter -Encode input.bin -Output transfer.txt
```
Decode:
```bash
./build/binaryconverter -Decode transfer.txt output.bin
```
Mit Logfile:
```bash
./build/binaryconverter -Encode input.bin -Output transfer.txt -Log binaryconverter.log
```
Vorhandene Ausgabedatei ueberschreiben:
```bash
./build/binaryconverter -Decode transfer.txt output.bin -Force
```
## Verhalten
- Streaming-Verarbeitung ohne komplette Dateien in den RAM zu laden
- Base64-Zeilen mit 76 Zeichen
- temporaere Ausgabedatei im Zielverzeichnis und atomarer Rename nach Erfolg
- Decode prueft `SourceLength` und `SHA256`, wenn die Metadaten vorhanden sind
- Exitcodes wie die C#-Version: `0` Erfolg, `1` Laufzeit-/Datenfehler, `2` Argumentfehler
File diff suppressed because it is too large Load Diff