看到网上有好多人问,C++程序设计原理与实践第二版17章第一个例子如何配置实现的问题,大部分的问题是程序编译链接时出现:无法解析的外部符号 “public: virtual void __thiscall Graph_lib::Shape::move(int,int)”,如此之类。于是,我把这个程序成功配置了一遍,把配置过程与大家分享。
首先给出常见错误的结论:
- 不能解析的外部符号链接错误”:问题很可能是出现在创建项目的环节
- “未找到.lib文件的编译错误”:问题可能出现在链接库(.lib)文件放置于编译器不能找到的地方(位置参考C:\software installation\vs2017\VC\Tools\MSVC\14.10.25017\lib)
- “不能打开.h文件的编译错误”问题可能出现在头(.h)文件放置于编译器不能找到的地方(位置参考:C:\software installation\vs2017\VC\Tools\MSVC\14.10.25017\include)
(如何安装FLTK见原书附录D)
解决方案
- 使用VS2017(或者其他版本VS)新建一个项目,建立源文件,代码如下:
#include"Simple_window.h"
#include"Graph.h"
int main()
{
using namespace Graph_lib;
Point tl{ 100,100 };
Simple_window win{ tl,600,400,"Canvas" };
Polygon poly;
poly.add(Point{ 300,200 });
poly.add(Point{ 350,100 });
poly.add(Point{ 400,200 });
poly.set_color(Color::red);
win.attach(poly);
win.wait_for_button();
}
- 添加源文件如下图
源文件可以在stroustrup的主页下载。
- 链接器配置
如图:
点击最下边属性(注意把光标定位于程序中):
在附加依赖项中添加:
fltkd.lib;wsock32.lib;comctl32.lib;fltkjpegd.lib;fltkimagesd.lib;
详细可见原书附录D
这样就配置成功了!
- 最终的运行结果
博客同步更新于:http://liuxr.top/