【问题标题】:Wt Compilation IssuesWt 编译问题
【发布时间】:2013-03-24 20:56:11
【问题描述】:

我开始学习如何编写 Wt 应用程序,但我收到一个编译错误,我不知道如何修复。编译时,我收到一个错误,上面写着

g++ -lwthttp -lwt hello.cpp
/usr/bin/ld: /usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to symbol '_ZN5boost7signals6detail16signal_base_impl12connect_slotERKNS_3anyERKNS1_12stored_groupENS_10shared_ptrINS1_9slot_base6data_tEEENS0_16connect_positionE'
/usr/bin/ld: note: '_ZN5boost7signals6detail16signal_base_impl12connect_slotERKNS_3anyERKNS1_12stored_groupENS_10shared_ptrINS1_9slot_base6data_tEEENS0_16connect_positionE' is defined in DSO /usr/lib/libboost_signals.so.1.52.0 so try adding it to the linker command line
/usr/lib/libboost_signals.so.1.52.0: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status

我正在运行最新版本的 Arch Linux,如果它有任何用处的话。另外,这是我要编译的应用程序。

#include <Wt/WApplication>
#include <Wt/WBreak>
#include <Wt/WContainerWidget>
#include <Wt/WLineEdit>
#include <Wt/WPushButton>
#include <Wt/WText>

class HelloApplication : public Wt::WApplication {
  public:
    HelloApplication(const Wt::WEnvironment& env);

  private:
    Wt::WLineEdit *nameEdit_;
    Wt::WText     *greeting_;

    void greet();
};

HelloApplication::HelloApplication(const Wt::WEnvironment& env) : Wt::WApplication(env) {
  setTitle("Hello world");

  root()->addWidget(new Wt::WText("What is your name? "));
  nameEdit_ = new Wt::WLineEdit(root());
  Wt::WPushButton *button = new Wt::WPushButton("Greet me.", root());
  root()->addWidget(new Wt::WBreak());
  greeting_ = new Wt::WText(root());
  button->clicked().connect(this, &HelloApplication::greet);
}

void HelloApplication::greet() {
  greeting_->setText("Hello there, " + nameEdit_->text());
}

Wt::WApplication *createApplication(const Wt::WEnvironment& env) {
  return new HelloApplication(env);
}

int main(int argc, char **argv) {
  return Wt::WRun(argc, argv, &createApplication);
}

更新信息: 如果我链接 libboost_signals 库,则会收到以下控制台输出。

    g++ hello.cpp -lwt -lwthttp -lboost_signals

/usr/bin/ld: warning: libGraphicsMagick.so.3, needed by /usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so, not found (try using -rpath or -rpath-link)
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPathCurveToQuadraticBezierAbsolute'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetStrokeWidth'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetClipUnits'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `SetImageType'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetStrokeColor'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `GetDrawInfo'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawDestroyContext'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPathLineToAbsolute'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawAnnotation'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `ReadInlineImage'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPathStart'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetClipPath'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `SetImagePixels'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetStrokeOpacity'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPopClipPath'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetFillOpacity'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetStrokeAntialias'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPopGraphicContext'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `SyncImagePixels'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DestroyImage'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPushGraphicContext'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawLine'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawRender'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DestroyMagick'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPathCurveToAbsolute'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `ConstituteImage'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetFontSize'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `GetExceptionInfo'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `GetImagePixels'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetStrokeDashArray'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `ImageToBlob'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `ReadImage'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `SetImageOpacity'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPathMoveToAbsolute'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPushClipPath'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `CropImage'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetFillRule'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPathFinish'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `GetImageInfo'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetFillColor'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetFont'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawArc'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawAffine'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DestroyDrawInfo'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawClipPath'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetTextEncoding'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `SetImageClipMask'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawComposite'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawPathEllipticArcAbsolute'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawAllocateContext'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetStrokeLineCap'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `InitializeMagick'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `DrawSetGravity'
/usr/lib/gcc/i686-pc-linux-gnu/4.7.2/../../../libwt.so: undefined reference to `CompositeImage'
collect2: error: ld returned 1 exit status

【问题讨论】:

    标签: c++ compilation compiler-errors wt


    【解决方案1】:

    事实证明,AUR 上列出了一些可选依赖项,这些依赖项是正确编译所必需的。它们在这里列出

    https://www.archlinux.org/packages/community/i686/wt/
    

    此外,按照此处找到的教程进行操作时

    http://www.webtoolkit.eu/wt/src/hello
    

    你必须包括

    -lboost_signals
    

    编译时标记。

    【讨论】:

      【解决方案2】:

      提示在错误信息中,需要安装libgraphicsmagick。

      所有未定义的引用都在这个库中。

      这是成功链接程序的 ldd 输出。我用-lwthttp -lwt -lboost_signals

          linux-gate.so.1 =>  (0xb770f000)
          libwthttp.so.32 => /usr/lib/libwthttp.so.32 (0xb7629000)
          libwt.so.32 => /usr/lib/libwt.so.32 (0xb6fe3000)
          libboost_signals.so.1.49.0 => /usr/lib/libboost_signals.so.1.49.0 (0xb6fce000)
          libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb6ee2000)
          libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xb6ebc000)
          libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb6e9f000)
          libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xb6d3c000)
          libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb6d22000)
          libssl.so.1.0.0 => /usr/lib/i386-linux-gnu/i686/cmov/libssl.so.1.0.0 (0xb6cca000)
          libcrypto.so.1.0.0 => /usr/lib/i386-linux-gnu/i686/cmov/libcrypto.so.1.0.0 (0xb6b0b000)
          libboost_program_options.so.1.49.0 => /usr/lib/libboost_program_options.so.1.49.0 (0xb6aaf000)
          libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xb6a96000)
          libboost_system.so.1.49.0 => /usr/lib/libboost_system.so.1.49.0 (0xb6a91000)
          libboost_thread.so.1.49.0 => /usr/lib/libboost_thread.so.1.49.0 (0xb6a78000)
          libboost_regex.so.1.49.0 => /usr/lib/libboost_regex.so.1.49.0 (0xb6968000)
          libboost_date_time.so.1.49.0 => /usr/lib/libboost_date_time.so.1.49.0 (0xb6959000)
          libboost_filesystem.so.1.49.0 => /usr/lib/libboost_filesystem.so.1.49.0 (0xb693a000)
          libhpdf-2.2.1.so => /usr/lib/libhpdf-2.2.1.so (0xb6887000)
          libGraphicsMagick.so.3 => /usr/lib/libGraphicsMagick.so.3 (0xb6560000)
          libpangoft2-1.0.so.0 => /usr/lib/i386-linux-gnu/libpangoft2-1.0.so.0 (0xb6532000)
          libpango-1.0.so.0 => /usr/lib/i386-linux-gnu/libpango-1.0.so.0 (0xb64e6000)
          libgobject-2.0.so.0 => /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 (0xb6494000)
          libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb6396000)
          librt.so.1 => /lib/i386-linux-gnu/i686/cmov/librt.so.1 (0xb638d000)
          /lib/ld-linux.so.2 (0xb7710000)
          libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xb6389000)
          libicuuc.so.48 => /usr/lib/i386-linux-gnu/libicuuc.so.48 (0xb621f000)
          libicui18n.so.48 => /usr/lib/i386-linux-gnu/libicui18n.so.48 (0xb6044000)
          libicudata.so.48 => /usr/lib/i386-linux-gnu/libicudata.so.48 (0xb4ed3000)
          libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xb4ea9000)
          libjbig.so.0 => /usr/lib/i386-linux-gnu/libjbig.so.0 (0xb4e9b000)
          liblcms.so.1 => /usr/lib/i386-linux-gnu/liblcms.so.1 (0xb4e60000)
          libtiff.so.4 => /usr/lib/i386-linux-gnu/libtiff.so.4 (0xb4df9000)
          libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xb4d5d000)
          libjasper.so.1 => /usr/lib/i386-linux-gnu/libjasper.so.1 (0xb4d06000)
          libjpeg.so.8 => /usr/lib/i386-linux-gnu/libjpeg.so.8 (0xb4ccd000)
          libwmflite-0.2.so.7 => /usr/lib/i386-linux-gnu/libwmflite-0.2.so.7 (0xb4caf000)
          libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xb4c9c000)
          libSM.so.6 => /usr/lib/i386-linux-gnu/libSM.so.6 (0xb4c94000)
          libICE.so.6 => /usr/lib/i386-linux-gnu/libICE.so.6 (0xb4c7b000)
          libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xb4b43000)
          libbz2.so.1.0 => /lib/i386-linux-gnu/libbz2.so.1.0 (0xb4b32000)
          libxml2.so.2 => /usr/lib/i386-linux-gnu/libxml2.so.2 (0xb49de000)
          libgomp.so.1 => /usr/lib/i386-linux-gnu/libgomp.so.1 (0xb49ce000)
          libltdl.so.7 => /usr/lib/i386-linux-gnu/libltdl.so.7 (0xb49c4000)
          libgmodule-2.0.so.0 => /usr/lib/i386-linux-gnu/libgmodule-2.0.so.0 (0xb49bf000)
          libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xb4989000)
          libgthread-2.0.so.0 => /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 (0xb4985000)
          libffi.so.5 => /usr/lib/i386-linux-gnu/libffi.so.5 (0xb497c000)
          libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb493e000)
          libuuid.so.1 => /lib/i386-linux-gnu/libuuid.so.1 (0xb4938000)
          libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb4914000)
          liblzma.so.5 => /lib/i386-linux-gnu/liblzma.so.5 (0xb48ed000)
          libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xb48c3000)
          libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb48c0000)
          libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb48ba000)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        • 2020-04-03
        • 2010-10-04
        • 2018-02-15
        相关资源
        最近更新 更多