3

重複の可能性:
GCC C++ リンカー エラー: 'vtable for XXX' への未定義の参照、'ClassName::ClassName()' への未定義の参照

さて、2 つのオブジェクト ファイルと静的ライブラリで構成される共有オブジェクト ライブラリをコンパイルしようとしています。ライブラリにリンクしていますが、実際に MY オブジェクトで使用されるのは Lua だけで、その他は .a ファイルで使用されます。

IDE で生成されたリンク手順は次のとおりです。

g++ -shared  obj/Debug/GL/Window/Window.o obj/Debug/main.o   -o bin/Debug/libLOOGL.so -lX11 -lXrandr -lGL -llua5.2  /home/matt/Desktop/Development/LOOGL/lib/bin/OOGL.a

結果に対するlddの出力は次のとおりです。

ldd loogl.so
  linux-vdso.so.1 =>  (0x00007fff30b3e000)
  liblua5.2.so.0 => /usr/lib/x86_64-linux-gnu/liblua5.2.so.0 (0x00007f521b53e000)
  libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f521b23e000)
  libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f521b027000)
  libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f521ac68000)
  libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f521a96e000)
  libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f521a769000)
  /lib64/ld-linux-x86-64.so.2 (0x00007f521b991000)

必要なライブラリがリンクされておらず、結果が実行されません。参照がありません。

4

1 に答える 1

3

リンク行でのライブラリの順序は重要です。

試す:

g++ -shared  obj/Debug/GL/Window/Window.o obj/Debug/main.o   -o bin/Debug/libLOOGL.so /home/matt/Desktop/Development/LOOGL/lib/bin/OOGL.a -lX11 -lXrandr -lGL -llua5.2  
于 2012-10-05T04:17:19.143 に答える