2014-10-27 10 views
5

Zunächst bin ich noch neu hier und habe daher keine Ahnung, wie man den Code formatiert, damit er in dieser Frage ordentlich aussieht Ich hoffe, das ist akzeptabel. Ich befolge die Programmierungsprinzipien und -praxis von Stroustrup. Sie könnten vermuten, was das Problem ist ... ja FLTK Installation. Ich habe alle Schritte sorgfältig durchgeführt, um das Projekt in VS C++ 2013 zu erstellen; Seiten 1204-1206. (Ich habe Anhang C erfolgreich gemacht, mit std_lib_facilities.h).Fehler C1083: Datei kann nicht geöffnet werden: 'FL/Fl.h': Keine Datei oder Verzeichnis

Ich habe versucht, das folgende win32-Projekt zu erstellen, wie in dem Buch gezeigt:

#include <FL/Fl.h> 
#include <FL/Fl_Box.h> 
#include <FL/Fl_Window.h> 

int main() 
{ 
Fl_Window window(200, 200, "Window title"); 
Fl_Box box(0, 0, 200, 200, "Hey, I mean, Hello, World!"); 
window.show(); 
return Fl::run(); 
} 

Nach Lösung Aufbau, erhalte ich einen Fehler, der lautet: Fehler 1 Fehler C1083: kann nicht geöffnet werden Include-Datei: ‚FL /Fl.h ': Keine solche Datei oder Verzeichnis

Ich habe auch die Schritte zum Kopieren über einige Lib-Dateien aus dem FLTK Lib-Verzeichnis in C: \ Benutzer \ Pablo \ Desktop \ C++ Kursdateien \ Visual C++ \ Win32Project1 befolgt \ source.cpp, welches die Datei ist, die ich für Visual Studio Express 2013 erstellt habe. Kann mir jemand helfen? Wo finde ich diese fehlende Datei? Liegt das Problem vielleicht daran, dass die FLTK-Version in VS 2013 etwas veraltet ist? (Als ich die FLTK-Bibliothek kompilierte, habe ich einige Fehler, die mit der Sicherungsdatei und einigen Warnungen zu tun haben.) Ich habe das lange erforscht. Ich habe in diesem Forum einige Fragen gefunden, die damit zu tun haben, aber nicht genau auf das oben genannte Problem bezogen. Vielen Dank im Voraus.

PS Nun, es gab eine Frage, die mit dem gleichen Fehler zu tun hatte. Ich habe einige der erwähnten Tricks als Antwort auf die gleiche Frage befolgt, aber ohne Erfolg.

("Ein netter Trick, den Sie für diese Art von Fehlern tun können, ist den Cursor in den Dateinamen der # include-Anweisung zu setzen und Strg + Shift + G drücken. Es wird fehlschlagen und ein Meldungsfeld anzeigen, was die Include-Pfade sind: Die Lösung besteht darin, dem SDK einfach weitere Include-Pfade hinzuzufügen, indem Sie mit der rechten Maustaste auf Ihr Projekt klicken und zu Eigenschaften> C/C++> Allgemein und Einstellung "Zusätzliche Include-Verzeichnisse" wechseln 't funktionieren entweder: ("Stellen Sie sicher, dass das Include-Verzeichnis nicht das FL-Verzeichnis ist, sondern dessen Eltern. Der Grund dafür ist, wenn Sie #include" FL/Fl.h "sagen, Sie bitten den Compiler, in ein Ordner namens FL, um Fl.h zu finden, der sich in FLs Eltern befindet Wenn Sie FL als Include-Verzeichnis angeben, brauchen Sie nur #in zu sagen clude "Fl.h" ").

Antwort

2

Dies ist, weil es keine Header-Datei #include <FL/Fl.h> benannt ist, was sie damit meine ist, entweder #include <FL> oder #include <FL.h> je nachdem, welche Programm Ihre Herstellung einschließen, aber die erstere ist sehr wahrscheinlich, was Sie tun wollen, da es die Standard-Version ist. #include <FL.h> ist eine alte Bibliothek und ist nicht einmal im Standard enthalten. Es ist auch nicht in jeder Plattform enthalten. Sie sollten in diesem Beispiel nicht die .h-Version verwenden.

Das gleiche gilt für die anderen beiden Header-Dateien.

+0

hmmm. Immer noch kämpfend; Es macht keinen Unterschied. Vielleicht hat es mit den Umgebungsvariablen und dem Pfad zu tun, da ich vor einiger Zeit Netbeans installiert habe und den MingW-Compiler benutzt habe, um mit der IDE zu arbeiten. Ich bin mir nicht sicher, ob ich den Weg durcheinander bringen sollte. Sehr frustrierend. Den gleichen Fehler erhalten. – Pablo

+0

Diese Antwort ist NICHT wahr. Es 'FL/Fl.h' wird geschrieben, weil es erwartet, dass Sie diese Struktur in Ihrem Include-Verzeichnis beibehalten. Sie sollten das GL-Verzeichnis auch dort behalten, da einige Header im FL-Verzeichnis nach anderen Includes im GL-Verzeichnis suchen, von denen erwartet wird, dass sie dort sind. – user3353819

1

Die andere Antwort ist nicht im entferntesten wahr (ich habe buchstäblich nur ein FLTK-Programm mit allen Headern im Formular #include <FL/xxx.H> kompiliert). Wenn Sie FLTK Download erhalten Sie ein Verzeichnis (zB fltk-1.3.2), die diese Struktur

/fltk-1.3.2/ 
    FL/ 
    GL/ 
    src/ 
    lib/ 
    examples/ 
    + other stuff 

Unterverzeichnis FL die Header alle Dateien enthält, hat. Wenn Sie also das Verzeichnis fltk-1.3.2, wo immer Sie es abgelegt haben, unter \ foo \ finden, müssen Sie \ foo \ fltk-1.3.2 \ zu Ihrem zusätzlichen Include-Header-Feld hinzufügen.Seien Sie vorsichtig, Sie haben vielleicht versehentlich das falsche Verzeichnis gewählt (es passiert) oder Sie haben den Inhalt einer gezippten Version der Datei in eine verschachtelte Version von sich selbst extrahiert, was bedeutet, dass Sie etwas wie \ foo \ fltk-1.3.2 haben \ fltk-1.3.2 \ Also schau es dir an.

Wenn es die Header nicht finden kann, haben Sie fast sicher die zusätzlichen Include-Verzeichnisse Feld an der falschen Stelle oder im falschen Format. Klicken Sie auf die Dropdown-Schaltfläche, klicken Sie auf Bearbeiten, und klicken Sie manuell auf die Schaltfläche Neuer Ordner, und navigieren Sie zu dieser Schaltfläche.

Was Sie als nächstes finden, ist, dass Sie den Linker in die richtige Richtung zeigen müssen. Im obigen Beispiel ist dies der Standardort für die Installation der Bibliotheksdateien (.lib static sollte standardmäßig für FLTK sein), daher müssen Sie \ foo \ fltk-1.3.2 \ lib \ zu den Konfigurationseigenschaften -> Linker -> Allgemein -> Zusätzliche Bibliothek hinzufügen Verzeichnisse

DANN müssen Sie mit den spezifischen Bibliotheken verknüpfen. Da der Linker jetzt weiß, wo Sie suchen müssen, müssen Sie den Pfad angeben, aber benennen Sie sie einfach. Dazu gehen Sie zu Konfigurationseigenschaften -> Linker -> Eingabe -> Zusätzliche Abhängigkeiten, klicken Sie auf die Dropdown-Option, klicken Sie auf Bearbeiten und fügen Sie in separaten Zeilen (und ohne diese Kommas) fltkd.lib, fltkformsd.lib, fltkzlib.lib , wsock32.lib

+0

Ok Leute Danke für diese Antworten. Ich denke, es gibt etwas grundsätzlich falsch an dem, was ich mache, da FLTK einfach nicht Ball spielen will, obwohl er versucht hat, all Ihre Vorschläge umzusetzen. Möglicherweise muss ich die FLTK-Dateien löschen und neu installieren. Ich glaube, es könnte damit zu tun haben, dass ich Version 1.1.10 installiert habe, da es eine .zip-Datei zeigt. Ich installiere 1.3.2 .gz und entzippe es mit 7-zip. – Pablo

+0

Versuchen Sie, einige Online-Anweisungen wie folgt zu folgen: http://www.c-jump.com/bcc/common/Talk2/Cxx/FltkInstallVC/FltkInstallVC.html Sie können entweder explizit tun, was es sagt und die 'FL' und' GL kopieren 'Verzeichnisse zum VS include-Ordner und die' .lib'-Dateien zum lib-Ordner, was bedeutet, dass Sie nur die libs im 'input'-Feld hinzufügen müssen. Oder Sie können tun, was ich gesagt habe, nicht kopieren und dem Compiler mitteilen, wo Suche nach ihnen. Seien Sie vorsichtig: Wenn Sie FLTK kompilieren/installieren, wenn es im Debug-Modus fltkd.lib-Dateien erstellt, macht es in der Version fltk.lib-Dateien. Überprüfen Sie, was Sie getan haben und verknüpfen Sie sie entsprechend. – user3353819

+0

Um FLTK unter Windows zu erstellen, wechseln Sie in das IDE-Verzeichnis und verwenden Sie die vc.net-Lösung. Es muss möglicherweise in VS2013 konvertiert werden. Verwenden Sie nicht die vc6-Lösung. – cup

Verwandte Themen