可能重复:
GCC C++ 链接器错误:未定义对“xxx 的 vtable”的引用,未定义对“ClassName::ClassName()”的引用
好的,所以我正在尝试编译一个由 2 个对象文件和一个静态库组成的共享对象库。我正在链接到库,但只有 Lua 实际用于 MY 对象,其他对象用于 .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)
必要的库没有链接,结果不会运行,它缺少引用。