1

我正在尝试遵循编程 - 使用 C 的原则和实践,并且到目前为止我很喜欢它。上周初,我遇到了一个阻碍进一步进展的问题。我需要安装 FLTK。

在成功构建和运行 FLTK-1.3.0(请参阅我的其他问题/解决方案)之后,我遇到了它不能与 Stroustrup 的头文件一起运行的问题。我认为这是由于版本不同,但不确定。

所以我回到尝试让 1.1 工作。

我无法使用 MVC++2010 从他的网站构建 FLTK-1.1.10 或 fltk-1.1.9。

所以这将我们引向问题

1) 如果我使用 MinGW/Msys 构建它,它仍然可以从 VC++ 运行吗?到目前为止,我一直试图弄清楚 MinGW/Msys,但收效甚微,所以我还没有构建任何东西,所以我自己还不能测试这个。

2) 如果它不会运行 MinGW 构建,有没有办法用 VC++ 构建它?

据我了解,Building 将在 FLTK 目录中创建更多文件,以便我使用它。-MinGW 使用与 VC++ 不同的编译器,它们不能很好地协同工作

我觉得我在这部分浪费了很多时间,但是这是一次很好的学习经历。可能对我的血压不太好。

我想此时我的主要选择是转移到另一个 IDE。Eclipse 看起来很不错。但我真的很想解决这个问题,而不是远离 VC++。

我之前的帖子(Microsoft 2010 visual c,安装 FLTK)详细介绍了编译期间发生的错误,以防万一。

我已经用谷歌搜索了这个问题,但还没有找到真正的解决方案。我希望这篇文章能为我自己和其他未来的程序员澄清这个问题。

4

2 回答 2

1

好吧,这花了我足够长的时间,但我终于弄明白了。这似乎是土地的布局。

  1. FLTK 1.3.0 与头文件兼容,但 graph.cpp 需要稍作更改才能运行。
  2. FLTK 1.1.10 不能与 Visual Express 2010 一起正确构建,但可以与 2008 版本一起使用。
  3. 头文件两者都可以使用,但您需要对 Graph.cpp 进行一些小的更改才能使它们正常工作。

在让所有这些都正常工作感到沮丧之后,我认为为可能处于类似情况的人编写分步指南是公平的。这本书面向的是新手程序员,而不是已经能够调试他的头文件和 cpp 文件的人。我很抱歉解决方案有点冗长,但我认为它只适合像我这样可能面临它的人。

Visual Express 2008 / 2010 指南

1) 构建 FLTK。不像听起来那么容易,但也不算太糟糕。2008 年使用 FLTK 1.1.0。2010 年使用 1.3.0。

  1. 对于 2010 年,请参阅我在此处编写的解决方案 – Microsoft 2010 visual c ,安装 FLTK

  2. 对于 2008,请改为运行 C:\fltk-1.1.10\vc2005\fltk.lib.vcproj。

    如果在构建过程中出现任何错误,您将需要找出问题所在。

2) 建立一个新项目

  1. 对于 2010 年,只需按照上面的指南
  2. 2008 年——基本相同,但有一些变化
    1. 确保将 1.3.0 的所有引用更改为 1.1.10
    2. 在输入部分,而不是用分号分隔 .lib 文件;请改用空格,因此链接器>输入>附加依赖项将如下所示 c:\fltk-1.1.10\lib\fltk.lib wsock32.lib comctl32.lib c:\fltk-1.1.10\lib\fltkjpeg。库 c:\fltk-1.1.10\lib\fltkimages.lib

3) 运行测试程序以确保您的 FLTK 工作正常,尝试 -

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

int main()
{
Fl_Window win(320,200);
win.show();
return Fl::run();
}

如果这里有任何错误,那么您将无法继续。

4) 将他网站上的文件放入正确的文件夹中。

  1. 对于 2008 年,在名为 headertest 的项目中 -
    1. C:\Users\User\Documents\Visual Studio 2008\Projects\headertest\ 把 std_lib_facilities.h 放在这里
    2. C:\Users\User\Documents\Visual Studio 2008\Projects\headertest\headertest\ 将他网站上的所有其他 .cpp 和 .h 文件放在这里,当然你的 headertest.cpp 和 .h (如果需要)将是在这里创建。
    3. 确保按照上面我的指南中的步骤正确设置了项目。
  2. 2010 年在名为 Fri_FLTK_Test 的项目中 -
    1. 执行与上述相同的操作,但将文件放在 2010 等效项中 - C:\Users\User\Documents\Visual Studio 2008\Projects\headertest 和 ..Visual Studio 2010\Projects\Fri_FLTK_Test\Fri_FLTK_Test

5) 将 .h 和 .cpp 文件添加到您的活动项目中。

  1. 只需右键单击项目添加>现有项目 - 选择默认目录中的所有 .h 和 .cpp 文件。您不需要添加 ..\std_lib_facilities.h 因为您已经直接引用了它。不要问我为什么,但这有效。

6)现在你会发现,如果你运行这个项目,你会得到一堆错误,最重要的是——

c:\users\user\documents\visual studio 2010\projects\fri_fltk_test\graph.cpp(237): 错误 C2084: 函数 'Graph_lib::Circle::Circle(Point,int)' 已经有一个主体

7) 我们可以通过打开 Graph.cpp 并注释掉 Circle::Circle 部分来解决这个问题,比如 -

//Circle::Circle(Point p, int rr)    // center and radius
//:r(rr)
//{
//    add(Point(p.x-r,p.y-r));       // store top-left corner
//}

8) 保存更改并再次运行您的项目,您应该会发现它可以工作了!9) 现在最好的部分,将书中的代码放入(或从-Chapter13/chapter.13.2.cpp复制它并运行它!它应该可以工作。

任务完成!

认为在那之后我应该喝啤酒!我花了很多时间来弄清楚这一切,查看了 Msys、g++、Netbeans 和许多其他与 IDE 相关的东西。但是让它在我最初的选择上工作是一种很好的感觉。我希望本指南可以帮助遇到类似情况的其他人。

特别感谢 Dream.In.Code 论坛的 Skydiver 对这个问题的帮助。

于 2012-07-27T09:32:24.170 回答
0

可能是因为您运行的是 Express 版吗?我遇到过类似的问题,不得不切换到旧版本的 Express。

你看过这个帖子吗?

http://answerpot.com/showthread.php?275672-FLTK+%26+Visual+C%2B%2B+Express%3F

-硅。

于 2012-07-19T08:15:01.180 回答