.obj 文件中的 Qt 错误:未解析的外部
Qt error in .obj file: unresolved externals
所以我更改了以下几行:
LIBS += \
/usr/local/lib/libOpenMeshCore.so \
/usr/local/lib/libOpenMeshTools.so
LIBS += \
-lglut -lGLU
至:
LIBS += \
-lglut32 -lOpenMeshCored -lOpenMeshToolsd
然后我遇到了这些错误:
QGLViewerWidget.obj:-1: error: LNK2019: unresolved external symbol __imp_glutWireTeapot referenced in function "protected: virtual void __cdecl QGLViewerWidget::draw_scene(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)"
QGLViewerWidget.obj:-1: error: LNK2019: unresolved external symbol __imp_glutSolidTeapot referenced in function "protected: virtual void __cdecl QGLViewerWidget::draw_scene(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)"
meshviewer.obj:-1: error: LNK2019: unresolved external symbol __imp___glutInitWithExit referenced in function glutInit_ATEXIT_HACK
看起来您的 OpenMesh 库是 64 位的,您正在尝试 link 使用 32 位过剩库,这是不可能的。您有两个选择:
- 不要使用 glut32,使用 64 位 glut 库。
- 如果您需要 32 位二进制文件,请将所有其他库也更改为 32 位版本。对于 运行 Linux 上的 32 位应用程序(您似乎已经打开),您可能需要添加
i386
体系结构(有关详细信息,请参阅 here)。
所以我更改了以下几行:
LIBS += \
/usr/local/lib/libOpenMeshCore.so \
/usr/local/lib/libOpenMeshTools.so
LIBS += \
-lglut -lGLU
至:
LIBS += \
-lglut32 -lOpenMeshCored -lOpenMeshToolsd
然后我遇到了这些错误:
QGLViewerWidget.obj:-1: error: LNK2019: unresolved external symbol __imp_glutWireTeapot referenced in function "protected: virtual void __cdecl QGLViewerWidget::draw_scene(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)"
QGLViewerWidget.obj:-1: error: LNK2019: unresolved external symbol __imp_glutSolidTeapot referenced in function "protected: virtual void __cdecl QGLViewerWidget::draw_scene(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)"
meshviewer.obj:-1: error: LNK2019: unresolved external symbol __imp___glutInitWithExit referenced in function glutInit_ATEXIT_HACK
看起来您的 OpenMesh 库是 64 位的,您正在尝试 link 使用 32 位过剩库,这是不可能的。您有两个选择:
- 不要使用 glut32,使用 64 位 glut 库。
- 如果您需要 32 位二进制文件,请将所有其他库也更改为 32 位版本。对于 运行 Linux 上的 32 位应用程序(您似乎已经打开),您可能需要添加
i386
体系结构(有关详细信息,请参阅 here)。