2010-12-22 15 views
4

Ich habe versucht, einige C++ WIN32-Code mit GCC über DevC++ (MinGW GCC) zu kompilieren. Es scheint, dass es die Objekte nicht verknüpfen konnte und es gab keine eindeutige Fehlermeldung: "[PathToSource]> Error 1".Kompilieren von WIN32-Code mit GCC

Versucht das gleiche mit Eclipse (MinGW GCC) und es kompiliert. Es werden jedoch nicht alle Ressourcen angezeigt, da ich ein Symbol zum Kompilieren als das Symbol der Anwendung eingerichtet habe, das aus den Ressourcendateien geladen wurde. Ich bekomme auch ein Konsolenfenster im Hintergrund, während ich die Anwendung starte.

Was ist die Ursache dafür? Wie kann ich die Ressourcendateien mit dem Code kompilieren und das Laden eines Konsolenfensters im Hintergrund vermeiden?

Ich fragte mich auch, ob es eine Möglichkeit gibt, WIN32-Code in Linux über GCC zu kompilieren, oder eine Möglichkeit, es für den gleichen Compiler zu portieren.

+2

Die Konsole ist, weil das Subsystem der ausführbaren Datei auf CLI und nicht auf GDI festgelegt ist. Probieren Sie linker switch '--subsystem' aus. – ruslik

+0

Zusätzlich zu Ruslik Kommentar auschecken: http://www.cygwin.com/ml/cygwin/2009-03/msg01028.html –

Antwort

1

Ressource-Dateien in Eclipse:

Im Erstellungsschritt des Projektes, muss es den Befehl und den vollständigen Pfad eingegeben werden, um die Ressource und ihre Ausgabedatei.

windres ../Resources/resource_file.rc -o ../Debug/resource_file.o 

Im Werkzeugeinstellungen des Projektes in den Linker-Optionen muss der Pfad zur Ressource Ausgabedatei, um zu hinzugefügt werden, für die Ressourcen in die ausführbare Datei verknüpft werden.

../Debug/resource_file.o 

das Fenster Konsole vermeiden:

Ein Linker-Flag muss nur für GUI angegeben werden.

-mwindows 

in Eclipse:

Geben Sie die Flagge in den Projekt Werkzeugeinstellungen in Linker Flags.

2

Ich habe versucht, einige C++ WIN32 Code mit GCC durch DEVC++ (MinGW GCC) zu kompilieren. Es scheint, dass es fehlgeschlagen die Objekte zu verknüpfen, und es gab keine klare Fehlermeldung: "[PathToSource]> Fehler 1".

Haben Sie einen Pfad zum Windows SDK hinzugefügt? Auf meinem Computer ist es an:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64

(Anmerkung I von Visual Studios auf meinem Computer installiert haben)

Kompilieren Sie mit den entsprechenden gcc library setting s programmieren.

Versucht das gleiche mit Eclipse (MinGW GCC) und es kompiliert. Allerdings nicht alle Ressourcen angezeigt, wie ich haben ein Symbol zum Kompilieren als -Symbol der Anwendung, es ist geladen aus den Ressourcen-Dateien. Ich bekomme auch ein Konsolenfenster im Hintergrund als ich die Anwendung ausführen.

Überprüfen Sie die Ressourceneinstellungen, um zu sehen, wo Eclipse auf Ihre Windows-Bibliothek verweist.

Was ist der Grund dafür? Wie kann ich die Ressource-Dateien mit den Code kompilieren und auch das Laden von ein Konsolenfenster im Hintergrund vermeiden.

Entwickeln Sie Ihre Anwendungen in Visual Studio. Wenn Sie sich Visual Studio nicht leisten können und Sie ein Hobbyprogramm sind, denken Sie an Visual Studios Express.

Ich frage mich auch, wenn eine Art und Weise gibt es WIN32-Code in Linux durch GCC oder ein Weg zum Hafen es für die gleichen Compiler zu kompilieren.

Wenn Sie die WINAPI meinen, dann nein, nicht so weit wie ich weiß. Wenn Sie Kompatibilität wünschen, sollten Sie bei der Standard-C++ - Bibliothek bleiben.

Es gibt jedoch Universalbibliotheken, die Ihnen nützlich sein könnten:

  1. http://sourceware.org/pthreads-win32/
  2. http://stdcxx.apache.org/#platforms
  3. http://www.gtk.org/download-windows.html
  4. Cross Platform Lbiraries (Stackoverflow)
+0

Danke für den ersten Tipp, habe ich das nicht getan. –

4

Versuchen in Eingabeaufforderung kompilieren und sehen, was das passiert.

für Ihre Ressource-Datei versuchen Sie dies in der Eingabeaufforderung.

windres resource_file.rc -o resource_file.o und schließlich den Code zu bauen, g++ resource_file.o -o app.exe app.cpp

+0

Sie haben nichts über die anderen Probleme angegeben, aber das habe ich übersehen. –

Verwandte Themen