c++ - FLTK版本1.3.2,Visual Studio 2012和Stroustrup的PPP书的第一个示例

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

请看一下我想做的每个步骤,如果任何步骤有误,请告诉我进行修改。

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

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- 构建菜单中,我选择构建解决方案并单击它。需要一些时间才能完成,最后出现了以下消息:

           *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 文件夹,并将除 README.lib 文件之外的七个lib文件复制到本机的此路径中(C:\ Program Files \ Microsoft Visual Studio 11.0 \ VC \ lib)。

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

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

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

Win32Project1->确定->下一步->单击“空项目”->完成。
在“解决方案资源管理器”中,右键单击“Win32Project1”->选择“添加”->新项目->选择“C++文件(.cpp)”->将项目命名为“Win32Project1”->添加。

10- 现在,该新项目为空,并且在底部仅显示以下消息:VMware Virtual Debugger成功加载。这就是为什么我认为是因为我在计算机上安装了VMware Workstation程序。

11- 然后,我单击项目菜单,然后选择属性

12- 然后链接器-> 输入,并在附加依赖项文本字段中,我编写了以下文本:fltkd.lib wsock32.lib comctl32.lib fltkjpegsdd.lib

13- 忽略特定的默认库文本字段中,我编写了 libcd.lib

14- 然后 C / C++ -> 代码生成,并在运行时库中,预先选择多线程调试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 *错误1错误LNK1104:无法打开文件'fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib'c:\ Users \ CS \ documents \ visual studio 2012 \ Projects \ Win32Project1 \ Win32Project1 \ LINK *

因此,我返回到链接器-> 输入,并在附加依赖项文本字段中,单击<编辑...>,并用新行分隔每个.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的网站下载了编程代码zip文件,并将 GUI 文件夹中的所有 .h .cpp 文件(10个文件)复制到了此路径的我的包含文件夹中(C:\ Program Files \ Microsoft Visual Studio 11.0 \ VC \ include)。还有一个Makefile文件,我没有将其复制到include目录中。然后,我清除了之前的代码,并将在第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:'多边形':模糊符号C:\ users \ cs \ documents \ visual studio 2012 \ projects \ win32project1 \ win32project1 \ win32project1.cpp 20

20- 所以我使用了这个片段代码 Graph_lib::Polygon poly; 代替此多边形poly; ,然后再次运行代码。再次有11个错误,首先是:

*错误9错误LNK2001:未解析的外部符号“ protected :虚拟void __thiscall Graph_lib::Window::draw(void)”(?draw @ Window @ Graph_lib @@ MAEXXZ)C:\ Users \ CS \ documents \ visual studio 2012 \项目\ Win32Project1 \ Win32Project1 \ Win32Project1.obj *

现在我还能做些什么?

最佳答案

我终于找到并解决了问题。如下所示:

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

关于c++ - FLTK版本1.3.2,Visual Studio 2012和Stroustrup的PPP书的第一个示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21063872/

相关文章:

c++ - 将来尝试引用已删除的函数

c++ - 无法在运行时设置 QLabel 的宽度

visual-c++ - Visual Studio 2019 中的类向导文件名是什么?我怎样才能重建它?它是腐败的

c++ - 为什么这个函数返回的值与我在内联时返回的值不同?

c++ - 以下场景如何进行类型转换?

c++ - 嵌套的 openMP 并行化结合 std::thread

c++ - 如何从qt中的类中调用方法?

visual-studio - .NET VS2005 WinForms : How do i drop a user control onto a form?

visual-studio - 如何从/GL 编译的.obj 文件中确定主要编译器版本?

c# - 从现有类生成接口(interface)