【问题标题】:FLTK version 1.3.2, Visual studio 2012 and the first example of Stroustrup's PPP bookFLTK 版本 1.3.2,Visual Studio 2012 和 Stroustrup 的 PPP 书籍的第一个示例
【发布时间】:2014-01-30 13:55:55
【问题描述】:

请看一下我要执行的每个步骤,如果有任何步骤错误,请告诉我修改它。

1-现在我的 C:\ 驱动器上有 MS VS 2012 编译器 (C:\Program Files\Microsoft Visual Studio 11.0)。

2-我去fltk网站下载了1.3.2版,因为我认为它是新的,所以它可以更好地支持。 (http://www.fltk.org/software.php?VERSION=1.3.2&FILE=fltk/1.3.2/fltk-1.3.2-source.tar.gz)

3- 在我的桌面上解压缩该软件包后,我转到此路径 (C:\Users\CS\Desktop\fltk-1.3.2-source\fltk-1.3. 2\ide\VisualC6) 并在那里找到“fltk.dsw”文件。我双击它并按下确定按钮。每个“.dsp”文件都是事先选择好的。

4- 然后出现一条消息,“正在迁移解决方案项目和项目”。并且有84个项目,之后发生了一些相关的操作。

5-Build 菜单中,我选择了 Build Solution 并单击它。花了一些时间才完成,最后出现了这条消息:

           *82>  fltk_gldll.vcxproj -> C:\Users\CS\Desktop\fltk-1.3.2-source\fltk-          1.3.2\ide\VisualC6\.\Debug/fltk_gldll\fltk_gldll.dll
                  ========== Build: 84 succeeded, 0 failed, 0 up-to-date, 0 skipped* ==========

6- 然后我关闭了 Visual Studio 并从 FLTK 的主文件夹中打开 lib 文件夹并复制了七个 lib 文件,除了README.lib 文件到我机器的这个路径中(C:\Program Files\Microsoft Visual Studio 11.0\VC\lib)。

7- 然后我转到 FLTK 的主文件夹并将 FL 文件夹复制到此路径(C:\Program文件\Microsoft Visual Studio 11.0\VC\include)。现在 include 目录包含一个名为 FL 的文件夹。

8- 而且我在这个路径中找到了 fltk.sln 文件(C:\Users\CS\Downloads\Compressed\fltk-1.3.2 -source\fltk-1.3.2\ide\VisualC2010)。我也安装了它(然后构建解决方案)。我不应该也安装它吗?

9- 然后我从 Visual Studio 创建了一个“Win32 项目”,将其命名为“Win32Project1”。并做了如下工作:

Win32Project1 --> OK --> Next --> 点击“empty project” --> Finish。 在“解决方案资源管理器”中右键单击“Win32Project1”-> 选择“添加”-> 新建项目-> 选择“C++ 文件 (.cpp)”-> 将项目命名为“Win32Project1”-> 添加。

10-现在这个新项目是空的,底部只有这条消息:VMware Virtual Debugger Loaded successfully。这就是为什么我认为我在我的机器上安装了 VMware Workstation 程序。

11-然后我点击Project菜单并选择Properties

12- 然后 Linker --> Input 并在 Additional Dependencies 文本字段中,我写了这个文本:fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib

13-Ignore Specific default Libraries 文本字段中,我编写了 libcd.lib

14- 然后C/C++ --> 代码生成,在Runtime Library中多线程调试 DLL (/MDd) 是预先选择的。所以我只点击了确定。

15- 然后我在那个项目上写了1160页的简单代码(D.5)如下,然后按F5

#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, He llo, World! ");
  window.show();
  return Fl::run();
}

16-发生错误:

E*rror 1 错误 LNK1104: 无法打开文件 'fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib' c:\Users\CS\documents\visual studio 2012\Projects\Win32Project1\Win32Project1\LINK *

所以我返回到 Linker --> Input 并在 Additional Dependencies 文本字段中单击 Edit …>,并用新行分隔每个 .lib 文件。又跑了。 下一个错误是这样的: 错误 1 ​​错误 LNK1104: 无法打开文件 'fltkjpegd.lib' c:\Users\CS\documents\visual studio 2012\Projects\Win32Project1\Win32Project1\LINK

17- 于是我又去了 (fltk-1.3.2-source\fltk-1.3.2\lib) 复制了所有的。 lib 文件(自述文件除外)(共有 13 个 .lib 文件)并将它们粘贴到该路径(C:\Program Files\Microsoft Visual Studio 11.0\VC\lib) 并重新运行代码。这次代码成功了。哇。

18- 所以在这次成功之后,我从 Stroustrup 的网站下载了 Programming-code zip 文件并复制了所有 .h.cpp GUI 文件夹中的文件(10 个文件)到此路径的我的包含文件夹 (C:\Program Files\Microsoft Visual Studio 11.0\VC\include)。还有一个 Makefile 文件,我没有将它复制到包含目录中。然后我清除了之前的代码,并将第 441 页(第一个示例)中编写的代码如下写入该项目并运行它。

//
// This is example code from Chapter 12.3 "A first example" of
// "Programming -- Principles and Practice Using C++" by Bjarne Stroustrup
//

#include "Simple_window.h"    // get access to our window library
#include "Graph.h"            // get access to our graphics library facilities

//------------------------------------------------------------------------------

int main()
{
    using namespace Graph_lib;   // our graphics facilities are in Graph_lib

    Point tl(100,100);           // to become top left  corner of window

    Simple_window win(tl,600,400,"Canvas");    // make a simple window

    Polygon poly;                // make a shape (a polygon)

    poly.add(Point(300,200));    // add a point
    poly.add(Point(350,100));    // add another point
    poly.add(Point(400,200));    // add a third point 

    poly.set_color(Color::red);  // adjust properties of poly

    win.attach (poly);           // connect poly to the window

    win.wait_for_button();       // give control to the display engine
}

//------------------------------------------------------------------------------ 

19-第一个错误说的有 13 个错误:

错误 8 错误 C2872: 'Polygon' : ambiguous symbol C:\users\cs\documents\visual studio 2012\projects\win32project1\win32project1\win32project1.cpp 20

20- 所以我使用了这个片段代码 Graph_lib::Polygon poly; 而不是这个 Polygon poly; 并再次运行代码。再次出现 11 个错误,首先是这样的:

*错误 9 错误 LNK2001:未解析的外部符号“受保护:虚拟 void __thiscall Graph_lib::Window::draw(void)”(?draw@Window@Graph_lib@@MAEXXZ) C:\Users\CS\documents\visual工作室 2012\Projects\Win32Project1\Win32Project1\Win32Project1.obj*

现在我还能做什么?

【问题讨论】:

  • 光是阅读就很累。你继续前进,你正在犯所有你需要犯的初学者错误。之后让 C++ 程序员感觉很特别,机器的征服者等等。
  • 您需要将 graph_lib 库添加到链接器输入中。在 fltkd.lib 之前单独添加一行。
  • 我在 fltkd.lib 之前输入了 graph_lib.lib,并用新行分隔。它们是:graph_lib.lib fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib。现在有一个新错误是 Error 1 error LNK1104: cannot open file 'graph_lib.lib' C:\Users\CS\documents\visual studio 2012\Projects\Win32Project1\Win32Project1\LINK
  • 没有答案吗!?

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


【解决方案1】:

我终于找到并解决了这个问题。如下:

首先,即使我们假设在整个机器中都有一个具有该名称的库,也无需在 Linker Input 文本字段中添加一些名为 *Graph_lib* 的库! 对 PPP 的第 411 页代码项目(第一个示例)需要做的唯一更改是在 Polygon poly; 之前添加 Graph_lib::。之后我们需要在项目中添加一些 .cpp 文件。我将从 Stroustrup 的网站下载的 GUI 文件夹的所有 .cpp 文件添加到项目中(它们是 Graph.cpp,GUI.cpp、Simple_window.cppwindow.cpp)并重新运行项目。它成功显示了结果。 无论如何,我很感谢你们这些好人,尤其是“杯子”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多