Statische und dynamische Linkung in C++: Was wählt man für Leistung und Größe?
Hallo zusammen! Ich bin ein C++-Anfänger und bin verwirrt über die Arten der Linkung. Ich schreibe ein kleines Projekt – ein Bildverarbeitungstool, das die Bibliotheken libpng und zlib verwendet. Ich habe zwei Varianten erstellt: mit statischer Linkung (die .exe-Datei wiegt 12 MB) und mit dynamischer Linkung (ich verwende .dll, die exe-Größe beträgt 500 KB, aber .dll-Dateien müssen daneben liegen).
Hier ist ein Beispiel für vereinfachten Code, den ich teste:
```cpp
#include
#include
int main() {
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, nullptr, nullptr);
if (!png_ptr) {
std::cerr << "Failed to create PNG struct\n";
return 1;
}
std::cout << "PNG library initialized successfully\n";
png_destroy_read_struct(&png_ptr, nullptr, nullptr);
return 0;
}
```
Build:
- Statisch: `g++ main.cpp -lpng -lz -static -o prog_static.exe`
- Dynamisch: `g++ main.cpp -lpng -lz -o prog_dynamic.exe`
Problem: Ich kann nicht verstehen, welcher Ansatz besser für die Leistung und Größe ist.