【问题标题】:error C1083: Cannot open include file: 'FL/Fl.h': No such file or directory错误 C1083:无法打开包含文件:'FL/Fl.h':没有这样的文件或目录
【发布时间】:2014-12-22 04:22:58
【问题描述】:

首先我还是新手,因此不知道如何格式化代码,所以在这个问题中看起来很整洁,我希望这是可以接受的。 我遵循 Stroustrup 的编程原则和实践。您可能会猜到问题出在哪里……是的 FLTK 安装。我已仔细按照所有步骤在 VS C++ 2013 中构建项目;第 1204-1206 页。 (我已经成功完成了附录 C,与 std_lib_facilities.h 有关)。

我正在尝试构建以下win32项目,如书中所示:

#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();
}

构建解决方案后,我收到一条错误消息:Error 1 error C1083: Cannot open include file: 'FL/Fl.h': No such file or directory

我还按照步骤将一些 lib 文件从 FLTK lib 目录复制到 c:\users\pablo\desktop\c++ course files\visual c++\win32project1\source.cpp 这是我为 Visual 创建的文件工作室快车 2013。 有人可以帮助我吗?我在哪里可以找到这个丢失的文件?问题是否可能与 FLTK 版本在 VS 2013 中使用有点过时有关? (当我编译 FLTK 库时,我遇到了一些与备份文件有关的错误和一些警告。) 我已经研究了很长时间。我在这个论坛中发现了一些与此有关的问题,但与上述问题并不完全相关。提前非常感谢。

PS 好吧,有一个问题与相同的错误有关。我已经按照提到的一些技巧作为相同问题的答案,但无济于事。

("对于这些类型的错误,您可以做的一个巧妙的技巧是将光标放在#include 语句的文件名中,然后按 Ctrl+Shift+G。它将失败并显示一个消息框,显示包含的内容路径是。解决方案是通过右键单击您的项目并转到“属性”>“C/C++”>“常规”并设置“其他包含目录”来简单地向 SDK 添加其他包含路径。”)

显示的另一个建议也不起作用:(“确保包含目录不是 FL 目录,而是它的父目录。原因是当你说 #include "FL/Fl.h" 时,你'要求编译器进入名为 FL 的文件夹以查找 Fl.h,该文件夹将驻留在 FL 的父级中。如果将 FL 指定为包含目录,则只需说 #include "Fl.h"")。

【问题讨论】:

    标签: c++ visual-studio-2013 fltk


    【解决方案1】:

    另一个答案不太正确(我实际上只是编译了一个 FLTK 程序,其中所有标题都采用#include &lt;FL/xxx.H&gt; 的形式)。当你下载 FLTK 时,你会得到一个具有这种结构的目录(比如 fltk-1.3.2)

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

    子目录 FL 包含所有头文件。因此,如果您将 fltk-1.3.2 目录放在 \foo\ 的任何位置,那么您需要将 \foo\fltk-1.3.2\ 添加到附加的包含标头字段中。请注意,您可能不小心选择了错误的目录(它发生了),或者您可能已将文件的压缩版本的内容提取到其自身的嵌套版本中,这意味着您可能有类似 \foo\fltk-1.3.2 的内容\fltk-1.3.2\ 所以看看吧。

    如果找不到标题,您几乎可以肯定附加的包含目录字段位于错误的位置或格式错误。单击下拉按钮,单击编辑并手动单击新文件夹按钮并导航到它。

    接下来您会发现,您必须将链接器指向正确的方向。在上面安装库文件的默认位置(.lib static 应该是 FLTK 的默认位置)因此您需要将 \foo\fltk-1.3.2\lib\ 添加到配置属性 -> 链接器 -> 常规 -> 附加库目录

    那么您需要链接到特定的库。由于链接器现在知道在哪里查看您需要指定路径,但只需命名它们。为此,请转到配置属性 -> 链接器 -> 输入 -> 附加依赖项,单击下拉选项,单击编辑并添加在单独的行上(并且没有这些逗号)fltkd.lib、fltkformsd。库、fltkzlib.lib、wsock32.lib

    【讨论】:

    • 好的,谢谢你的回答。我认为我所做的事情根本上是错误的,因为尽管尝试实施您的所有建议,但 FLTK 只是不想打球。我可能必须删除 FLTK 文件并重新安装它们。我认为这可能与我安装了 1.1.10 版本有关,因为它显示了一个 .zip 文件。我将安装 1.3.2 .gz 并使用 7-zip 解压缩。
    • 尝试遵循一些在线说明,例如:c-jump.com/bcc/common/Talk2/Cxx/FltkInstallVC/… 您可以明确执行它所说的并将FLGL 目录复制到VS 包含文件夹并将.lib 文件复制到lib 文件夹,这意味着您只需在“输入”字段中添加库或者您可以按照我说的做,而不是复制它们并告诉编译器在哪里查找它们。请注意:当您编译/安装 FLTK 时,如果在调试模式下它会生成 fltkd.lib 文件,如果在发布模式下它会生成 fltk.lib 文件。检查您所做的并正确链接。
    • windows下搭建FLTK,进入IDE目录,使用vc.net方案。它可能需要转换为 VS2013。不要使用 vc6 解决方案。
    【解决方案2】:

    这是因为没有名为#include &lt;FL/Fl.h&gt; 的头文件,他们的意思是包含#include &lt;FL&gt;#include &lt;FL.h&gt;,具体取决于您制作的程序,但前者很可能是您想要做的,因为这是标准版。 #include &lt;FL.h&gt; 是一个旧库,甚至没有包含在标准中。它甚至也不包含在每个平台中。在此示例中,您不应使用 .h 版本。

    其他两个头文件也是如此。

    【讨论】:

    • 嗯。还在挣扎;它没有任何区别。也许它与环境变量和路径有关,因为前一段时间我安装了 Netbeans 并使用 MingW 编译器与 IDE 一起工作。我不确定我是否应该弄乱路径。确实非常令人沮丧。得到同样的错误。
    • 这个答案不正确。编写它FL/Fl.h 是因为它希望您在包含目录中维护此结构。您也应该保留 GL 目录,因为 FL 目录中的一些头文件会在 GL 目录中查找它期望存在的其他包含。
    猜你喜欢
    • 2017-02-12
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2014-08-02
    • 2010-10-27
    相关资源
    最近更新 更多