2

我在 Windows 7 32 位中的机器和我的 C++ 编译器是Visual Studio 2012所以首先我从这里下载了 FLTK ( http://www.stroustrup.com/Programming/FLTK/ ) 然后我做了如下工作想要我:

一、解压下载的文件,打开主文件夹,fltk-ll? 在 Visual C++ 文件夹(例如 vc2005 或 vcnet)中,打开 fltk.dsw。如果询问有关更新旧项目文件的问题,请选择 Yes to All。

PS:我的编译器是vc2012而不是vc2005 ,在vc2005或vcnet文件夹中没有任何名为fltk.dsw的文件,所以我从vcnet中选择了fltk.sln并安装了它。安装时出现了一些失败,但终于完成了!

  1. 从构建菜单中,选择构建解决方案。这可能需要几分钟的时间。源代码被编译到静态链接库中,因此您在创建新项目时不必重新编译 FLTK 源代码。该过程完成后,关闭 Visual Studio。

  2. 从主 FLTK 目录打开 lib 文件夹。将除 README.lib(应该有 scven)之外的所有 .lib 文件复制(不仅仅是移动/拖动)到 C:\Progran Files\Microsoft Visual Studio\Vc\lib 中。

  3. 回到 FLTK 主目录,将 FL 文件夹复制到 C:\Program Files\Microsoft Visual Studio\Vc\include。

  4. 在 Visual Studio 中创建一个新项目,对常规过程进行一项更改:在选择项目类型时创建一个“\Vin32 项目”而不是“控制台应用程序”。一定要创建一个“空项目”;否则,一些“软件向导”会给你的项目添加很多你不太可能需要或理解的东西。

  5. 在 Visual Studio 中,从主(顶部)菜单中选择项目,然后从下拉菜单中选择属性。

  6. 在“属性”对话框的左侧菜单中,单击“链接器”文件夹。这会展开一个子菜单。在此子菜单中,单击输入。在右侧的 Additional Dependencies 文本字段中,输入以下文本: fltkd.lib wsock32.lib comctl32.lib fltkjpegd.lib fltkimagesd.lib [以下步骤可能是不必要的,因为 il 现在是默认值。] 在 Ignore Specific Library文本字段,输入以下文本:libcd.lib

  7. [此步骤可能不需要,因为 /MDd 现在是默认设置。] 在同一属性窗口的左侧菜单中,选择 C/C++ 以展开不同的子菜单。单击代码生成子菜单项。在右侧菜单中,将运行时库下拉菜单更改为多线程调试 DLL (/MDd)。单击“确定”关闭“属性”窗口。

在这一步中,我向新创建的项目添加了一个新项目(我将该项目命名为testv.cpp)并粘贴了这个简单的代码来测试 FLTK:

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

//***************************

int main() 
{
  FI_Window window(200, 200, "Window title");
  FL_Box box(O,O,200,200, "Hey, I mean, He llo, World! ");
  window.show();
  return Fl::run();
}

运行这个项目后(按F5),出现11个错误!它们在下面:

错误 1 ​​错误 LNK2019:函数 _main C:\Users\CS\documents\visual studio 2012\Projects\ 中引用的未解析外部符号“public: static int __cdecl Fl::run(void)”(?run@Fl@@SAHXZ) testv\testv\testv.obj

错误 2 错误 LNK2019:未解析的外部符号“受保护:__thiscall Fl_Widget::Fl_Widget(int,int,int,int,char const *)”(??0Fl_Widget@@IAE@HHHHPBD@Z) 在函数“public: __thiscall Fl_Box”中引用::Fl_Box(int,int,int,int,char const *)" (??0Fl_Box@@QAE@HHHHPBD@Z) C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv。对象

错误 3 错误 LNK2019:未解析的外部符号“public: virtual __thiscall Fl_Widget::~Fl_Widget(void)”(??1Fl_Widget@@UAE@XZ) 在函数“public: virtual __thiscall Fl_Box::~Fl_Box(void)”中引用( ??1Fl_Box@@UAE@XZ) C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\testv.obj

错误 4 错误 LNK2001: 无法解析的外部符号 "public: virtual void __thiscall Fl_Widget::resize(int,int,int,int)" (?resize@Fl_Widget@@UAEXHHHH@Z) C:\Users\CS\documents\visual studio 2012\项目\testv\testv\testv.obj

错误 5 错误 LNK2001:无法解析的外部符号“受保护:虚拟 void __thiscall Fl_Box::draw(void)”(?draw@Fl_Box@@MAEXXZ) C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\ testv.obj

错误 6 错误 LNK2001: 无法解析的外部符号 "public: virtual int __thiscall Fl_Box::handle(int)" (?handle@Fl_Box@@UAEHH@Z) C:\Users\CS\documents\visual studio 2012\Projects\testv\ testv\testv.obj

错误 7 错误 LNK2019:函数 _main C:\Users\CS\documents 中引用的未解析外部符号“public: __thiscall Fl_Window::Fl_Window(int,int,char const *)”(??0Fl_Window@@QAE@HHPBD@Z) \visual studio 2012\Projects\testv\testv\testv.obj

错误 8 错误 LNK2019:函数 _main C:\Users\CS\documents\visual studio 2012\Projects 中引用的未解析外部符号“public: virtual __thiscall Fl_Window::~Fl_Window(void)”(??1Fl_Window@@UAE@XZ) \testv\testv\testv.obj

错误 9 错误 LNK2019:函数 _main C:\Users\CS\documents\visual studio 2012\Projects\ 中引用的未解析外部符号“public: virtual void __thiscall Fl_Window::show(void)”(?show@Fl_Window@@UAEXXZ) testv\testv\testv.obj

错误 10 错误 LNK2019:未解析的外部符号WinMain@16 在函数 _ _tmainCRTStartup C:\Users\CS\documents\visual studio 2012\Projects\testv\testv\MSVCRTD.lib(crtexew.obj) 中引用

错误 11 错误 LNK1120: 10 个未解析的外部 C:\Users\CS\documents\visual studio 2012\Projects\testv\Debug\testv.exe

我认为问题与创建项目有关。从Win32 项目创建一个空项目后,我单击添加新项目并选择.cpp类型。我不知道它是否正确。

任何解决问题的想法?

4

2 回答 2

1

您收到该错误是因为您在一行中输入所有库名称而没有分隔符。它将整个列表作为一个库。单击省略号,然后输入以换行符分隔的每个库名称。

代替 wsock32.lib,使用 ws2_32.lib

于 2014-01-06T18:47:11.447 回答
0

您收到该错误是因为您在一行中输入所有库名称而没有分隔符。它将整个列表作为一个库。单击省略号,然后输入以换行符分隔的每个库名称。

代替 wsock32.lib,使用 ws2_32.lib

只是补充。要分隔每个库,请在每个库名称后放置一个分号(例如libraryname.lib; libraryname.lib,或者只需在文本框中按 enter 即可转到下一行,以便 Visual Studio 将其读取为下一行以及您输入的任何内容它会将其视为库名称。

例子:

libraryname.lib -现在,按回车键,它将转到下一行,VS 将识别库名称。 libraryname.lib -这是下一行和你的新库

我正在学习 C++ 并使用 Microsoft Visual Studio 2015 ^_^

于 2017-02-24T09:55:03.730 回答