Wie Bild bei .exe datei einfügen C(++)?

3 Antworten

Hier ein Tip von mir: Um in C und C++ zu programmieren empfehle ich den Qt-Creator. Das ist eine komplette C und C++ Entwicklungsumgebung bestehend aus Editor, Debugger, Formdesigner und der plattformunabhängigen Qt-Klassenbibliothek. Damit kann man ohne den Quellcode ändern zu müssen Programme für Windows, Mac und Linux entwickeln. Ausserdem kann man Qt einmal unter einer kostenlosen Open Source Lizenz lizenzieren (GNU GPL, GNU LPGL) oder unter einer kostenpflichtigen propritären Lizenz. Der Funktionsumfang ist bei beiden Lizenzen identisch. Die Qt-Bibliothek enthält Funktionen wie z.B. Bilder darstellen, Multimediafunktionen, Zugriff auf die Schnittstellen (z.B. USB, Bluetooth etc...), Netzwerkfunktionen und vieles mehr. Hier die benötigten Downloads:

für Windows:

  1. MinGW installieren, das sind die GCC Compiler für Windows: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe/download
  2. Qt-Creator: https://www.qt.io/download Wähle Open Source. Diese Lizenz ist kostenlos. Das Kompilieren wird vom Qt Creator aus gestartet.
  3. Qt Installer Framework, damit kann man sein fertig kompiliertes Programm mit allen benötigten Laufzeitbibliotheken und Frameworks in ein Installationspaket (setup.exe) zu verpacken. Ideal wenn man das Programm weitergeben möchte: https://download.qt.io/official_releases/qt-installer-framework/3.1.1/QtInstallerFramework-win-x86.exe

Nach der Installation muss man im Qt-Creator den Pfad zu MinGW eintragen oder man fügt MinGW zur Windows PATH Umgebungsvariable hinzu.

für Mac:

  1. Zuerst muss man die GCC Compiler installieren. Das geht so: In der Kommandozeile brew install gcc4.8 eingeben. Xcode ist nicht erforderlich.
  2. Qt-Creator: https://www.qt.io/download Wähle Open Source. Diese Lizenz ist kostenlos. Das Kompilieren wird vom Qt Creator aus gestartet.
  3. Qt Installer Framework, damit kann man sein fertig kompiliertes Programm mit allen benötigten Laufzeitbibliotheken und Frameworks in ein DMG-Paket verpacken. Ideal wenn man das Programm weitergeben möchte: https://download.qt.io/official_releases/qt-installer-framework/3.1.1/QtInstallerFramework-mac-x64.dmg

Für Linux installiert man die GCC Compiler und den Qt-Creator über die Paketverwaltung der jeweiligen Distribution. Das Qt-Installer Framework gibt es nicht für Linux, dort erzeugt man je nach Distribution mit den Bordmitteln deb oder rpm Installationspakete.

Die Zukunft des Programmierens ist die indem man von Anfang an plattformunabhängig programmiert. Das ist in der heutigen Zeit immer wichtiger. Wenn man z.B. irgendwann auf einen Mac umsteigt, kann man damit wie gewohnt weiter programmieren. Man muss nichts umlernen.

Hier ein Beispielcode für einen Bildbetrachter mit dem Qt-Creator. Die Darstellung des Bildes erfolgt mit der Qt-Bibliothek mit dem Modul QImage.

#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QMenu>   
#include <QtGui/QMenuBar>   
#include <QtGui/QScrollArea>
#include <QtGui/QLabel>
#include <QtGui/QImage>
#include <QtGui/QPixmap>
#include <QtGui/QFileDialog>

int main(int argc, char *argv[])  
{
  QApplication *myApp = new QApplication(argc, argv);
  QMainWindow *top = new QMainWindow();
  top->setWindowTitle("Bildbetrachter");
  QScrollArea *scroll = new QScrollArea;
  QLabel *label = new QLabel;
  scroll->setWidget(label);
  QMenu *fileMenu = top->menuBar()->addMenu("&Datei");
  fileMenu->addAction("&Beenden", myApp, SLOT(quit()));
  top->setCentralWidget(scroll); 
  top->setGeometry(100, 100, 800, 600);
  top->show();
  QImage image;
  if (argc > 1) image = QImage(argv[1]); 
  else image = QImage(QFileDialog::getOpenFileName()); 
  label->setPixmap(QPixmap::fromImage(image));
  label->setMinimumSize(image.width(), image.height());
  return myApp->exec(); 
}

Um das zu realisieren brauchst du im Grunde nur ein mingw Compiler. Als erstes solltest du die .ico (das Icon) in ein Verzeichnis ablegen. Für das Beispiel nennen wir das Icon einfach icon.ico. Dann erstellst du im selben Verzeichnis eine Datei namens icon.rc und fügst folgenden Inhalt ein: id ICON "icon.ico" .Dann speicherst du diese einfach ab, öffnest eine cmd oder PowerShell in dem Verzeichniss und gibst ein:

windres icon.rc -O coff -o icon.res

Wenn das geschehen ist sollte in dem Verzeichnis nun eine icon.res liegen. Um jetzt dein C++ Programm zu kompellieren musst du die icon.res nur noch in das Verzeichnis mit dem c++ Sourcecode legen und beim kompellieren icon.res angeben.

Beispiel: g++ main.cpp -o main.exe icon.res

Woher ich das weiß:Hobby

Welchen weg möchtest Du denn bevorzugt dazu gehen?

Unter Windows üblich wäre die Einbindung als Resource, recherchiere mal zu Resourcendateien.