0

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

私はArchLinuxの最新バージョンを実行していますが、それが役に立った場合は。また、これが私がコンパイルしたいアプリケーションです。

#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
4

2 に答える 2

1

適切なコンパイルに必要な、AURにリストされているいくつかのオプションの依存関係があることがわかりました。それらはここにリストされています

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

また、ここにあるチュートリアルに従う場合

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

を含める必要があります

-lboost_signals

コンパイル中にフラグを立てます。

于 2013-03-24T22:10:08.317 に答える
1

手がかりはエラーメッセージにあります。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)
于 2013-03-24T22:12:48.957 に答える