Windows 中 FLTK 2.0 中的链接错误

Posted

技术标签:

【中文标题】Windows 中 FLTK 2.0 中的链接错误【英文标题】:Linking errors in FLTK 2.0 in windows 【发布时间】:2014-09-05 06:56:36 【问题描述】:

我正在使用 Qt Creator(不使用任何 Qt 库)来测试 FLTK2.0 的 Hello World 项目。但我收到如下错误:

错误: UpBox.cxx:-1: 错误:对SelectObject@8' UpBox.cxx:-1: error: undefined reference toSetROP2@8' 的未定义引用 UpBox.cxx:-1: 错误:对PatBlt@24' UpBox.cxx:-1: error: undefined reference toCreatePatternBrush@4' 的未定义引用 UpBox.cxx:-1: 错误:未定义引用DeleteObject@4' :-1: error: C:\Users\mypc\Desktop\FLTK\fltk-2.0-win-bin\lib/libfltk2.a(UpBox.o): bad reloc address 0xb in section.text$_ZN4fltk7FlatBoxD1Ev[__ZN4fltk7FlatBoxD1Ev]'

ma​​in.cpp文件如下:

#include <fltk/Window.h>
#include <fltk/Widget.h>
#include <fltk/run.h>

using namespace fltk;

int main(int argc, char **argv) 
    Window *window = new Window(300, 180);
    window->begin();
    Widget *box = new Widget(20, 40, 260, 100, "Hello, World!");
    box->box(UP_BOX);
    box->labelfont(HELVETICA_BOLD_ITALIC);
    box->labelsize(36);
    box->labeltype(SHADOW_LABEL);
    window->end();
    window->show(argc, argv);
    return run();

hello.pro 文件:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
CONFIG+= c++11
LIBS += -L"C:\\Users\\mypc\\Desktop\\FLTK\\fltk-2.0-win-bin\\lib" -lfltk2
INCLUDEPATH += "C:\\Users\\mypc\\Desktop\\FLTK\\fltk-2.0-win-bin\\include"
DEPENDPATH += "C:\\Users\\mypc\\Desktop\\FLTK\\fltk-2.0-win-bin\\include"

为什么会出现这些错误?

n.b:FLTK 2.o MinGw 编译的二进制文件从FLTK Windows binaries下载

【问题讨论】:

你使用哪个编译器? 如果您搜索例如CreatePatternBrush你应该很快找到this link,它告诉你需要链接哪个系统库。 我正在使用 MinGW(mingw482_32) @Sergey 【参考方案1】:

静态库 FLTK 已正确链接,但它还需要链接到 Win32 API 才能在 windows 上工作。

您还必须链接到 Gdi32.dll。

【讨论】:

我已将 win32: LIBS += -lgdi32 -lws2_32 -lOle32 添加到 hello.pro 文件中。我仍然收到如下错误:run.cxx:-1: error: undefined reference to IID_IUnknown',run.cxx:-1: error: undefined reference to IID_IDropTarget' 是否也链接到 uuid.lib? 添加 uuid.lib 后没有链接错误。但是当我尝试运行该应用程序时,它会停止工作。 @Geoffroy 即一个弹出框说应用程序已停止工作 我运行调试器,它说“劣质停止,因为它收到了来自操作系统的信号。信号名称:SIGSEGV,信号含义:分段错误

以上是关于Windows 中 FLTK 2.0 中的链接错误的主要内容,如果未能解决你的问题,请参考以下文章

我收到一个链接器错误,我不理解 VC++ 和 FLTK [关闭]

编译 Fast Light Toolkit (FLTK) 2.0 以与 fastHOG 一起使用

如何在 Windows 上安装 FLTK?

用于 VS2019 的 circa-2011 代码库的 FLTK 2.0 构建和演示

在 microsoft visual 2010 上安装 FLTK 1.3.2

使用 MingW 和 makefile 时如何链接库