【问题标题】:How to use of FLTK in-box.get_string()如何使用 FLTK in-box.get_string()
【发布时间】:2015-02-09 07:00:36
【问题描述】:

以下代码是应用程序的一小部分。对于那个应用程序,我需要使用 in_box.get_string()。 in_box 的声明和定义在GUI.hGUI.cpp 文件的this 地址中。

对于整数,它工作正常。也就是说,如果我使用 in_box.get_int(),它会获取输入到 in_box 的数字并将该数字作为 integer 返回。但问题是,正如预期的那样,它不适用于strings。当使用字符串时,我得到错误!

例如,在下面的代码中,我使用了string s

#include <GUI.h>
#include <iostream>
using namespace Graph_lib;

class Calculator : public Window {
public:
    Calculator(Point, int, int, const string&);

private:
    //Widgets
    Button show_button;
    In_box enter_box;

    void show() { getstr(); cout <<s; }

    void getstr() {
        s = enter_box.get_string();
    }

  static void cb_show(Address, Address pw) { reference_to<Calculator>(pw).show(); }
  string s;
};

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

Calculator::Calculator(Point xy, int w, int h, const string& title):
    Window(xy, w, h, title),
    show_button(Point(x_max()-110, 440), 90, 35, "Show", cb_show),
    enter_box(Point(x_max()-400, 158), 245, 40,  "Enter"){

    attach(enter_box);
    attach(show_button);
}

int main()
{
    Calculator cal(Point(100,100), 600, 500, "Calculator");
    return gui_main();
}

有 8 个警告和两个错误。错误如下:

错误 9 错误 LNK2019: 无法解析的外部符号 "public: class std::basic_string,class std::allocator > __thiscall Graph_lib::In_box::get_string(void)" (?get_string@In_box@Graph_lib@@QAE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) 在函数“private: void __thiscall”中引用 计算器::getstr(void)" (?getstr@Calculator@@AAEXXZ) C:\Users\ME\documents\visual studio 2012\Projects\test_3\test_3\test_3.obj 错误 10 错误 LNK1120:1 未解决的外部 C:\Users\ME\documents\visual studio 2012\Projects\test_3\Debug\test_3.exe

错误说,这是一个链接器问题,但我的链接器输入的文件列表如下,到目前为止它(几乎)工作正常。

fltkd.lib
wsock32.lib
comctl32.lib
fltkjpegd.lib
fltkimagesd.lib

我的编译器是 MS VS 2012。机器是 Win 7。

请问有人知道怎么解决吗?

【问题讨论】:

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


    【解决方案1】:

    如果您已在 Debug 和 Release 模式下编译 FLTK,请确保您拥有正确的链接器依赖项:您为 Debug 列出的文件,以及 fltk.libwsock32.libcomctl32.libfltkjpegd.libfltkimages.lib 用于发布(注意名称末尾没有“d” )。

    其次,即使我认为它不会导致链接器错误(但会导致其他奇怪的问题),请确保您已在 Visual Studio 项目中包含所有 Stroustrup 图形库文件:fltk.h Graph.hGUI.hPoint.hSimple_window.h、std_lib_facilities.h、Window.hGraph.cppGUI.cppWindow.cpp。

    【讨论】:

    • 感谢您的回答。我复制到链接器依赖项中的文件列表正如我在问题中所说的那样。我不知道如何将 fltkimagesd.lib 更改为 fltkimages.lib 并且这不会导致其他问题!我包含了所有提到的库文件,但没有更改。
    • 我写了一点here
    • 好吧。您提供的资源非常有价值。前段时间,当我在VS 2012上无法成功设置和运行FLTK时,那个源可能就像一个宝藏!无论如何,我当时安装了它,但与您的方式不完全相同。最大的不同是我没有在发布和调试模式下安装,只是其中之一。无论如何,由于 PPP 中的 FLTK 仅用于第 12-16 章(我现在在第 17 章),而且由于 Stroustrup 不推荐 FLTK 用于图形的实际工作(他推荐 Qt),所以我不是很对 FLTK 的担忧。感谢您提供的所有帮助。
    • 我还有一个问题 :),我使用该 FLTK 编写了一个小应用程序。这是一个计算器,它是我有史以来最好的应用程序。现在如何在网络上发布它?或者如何将它包含在一个团队中?在那种情况下你能帮我吗?再次感谢。
    • 看看this here,我猜。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多