微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

uwebsockets 无法启动:libuv.c:-1: 错误:未定义对 `uv_is_closure'

如何解决uwebsockets 无法启动:libuv.c:-1: 错误:未定义对 `uv_is_closure'

我的项目已经链接了 uwebsockets。 链接库:

C:/Users/Sunway/.conan/data/zlib/1.2.11/_/_/package/a955db98e980a5ab86ae50d6df8bfee361185c27/lib/libzlib.a;
C:/Users/Sunway/.conan/data/libuv/1.41.0/_/_/package/a955db98e980a5ab86ae50d6df8bfee361185c27/lib/libuv_a.a;
C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a;
iphlpapi.dll;psapi.dll;userenv.dll;ws2_32.dll

ma​​in.cpp

#include "main.h"

int main()
{
  uWS::App().get("/hello",[](auto *res,auto *req) {
      res->end("Hello");
    });
  std::cout << "exiting Now!" << std::endl;
  return 0;
}

我遇到了错误

libuv.c:-1: error: undefined reference to `uv_is_closing'
libuv.c:-1: error: undefined reference to `uv_poll_init_socket'
……

35 个函数未定义,但我无法在 main.cpp 中直接调用这些函数

操作系统:Windows10 x64

IDE:QtCreator4.14.2

编译器:MinGW 32 位

完整的错误日志

11:04:53: 为项目rfid-cmd执行步骤... 11:04:53: 正在启动 "C:\Qt\Tools\CMake_64\bin\cmake.exe" --build 。 --目标全部

[1/1 0.3/sec] 链接 CXX 可执行文件 rfid-cmd.exe 失败:rfid-cmd.exe cmd.exe /C "cd . && C:\Qt\Tools\mingw810_32\bin\g++.exe -g CMakeFiles/rfid-cmd.dir/main.cpp.obj -o rfid-cmd.exe -Wl,--out-implib,librfid-cmd.dll.a -Wl,--major-image-version,--minor-image-version,0 -LD:/Project/misc/qt/rfid- cmd/lib -LD:/Project/misc/qt/rfid-cmd/lib/NFC9 -lReader -lEasyUSB214x C:/Users/Sunway/.conan/data/zlib/1.2.11// /package/a955db98e980a5ab86ae50d6df8bfee361185c27/lib/libzlib.a C:/Users/Sunway/.conan/data/libuv/1.41.0///package/a955db98e980a5ab86ae50d6df8bfee361185c27/lib/libuv_a.a C:/Users/Sunway/.conan/data/ussocket 0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a -liphlpapi -lpsapi -luserenv -lws2_32 -lkernel32 -luser232llugl32 -luser323llugl32 -luser32311321lglo321lgdl && cd 。” C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0xce): 对 uv_is_closing' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x143): undefined reference to uv_poll_init_socket' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x1ee): 对 uv_poll_stop' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x2c9): undefined reference to uv_prepare_init' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x2dc): 对 uv_prepare_start' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x2e7): undefined reference to uv_unref' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x30a): 对 uv_check_init' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x315): undefined reference to uv_unref' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x328): 对 uv_check_start' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x371): undefined reference to uv_loop_new' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x38f): 对 uv_ref' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x39a): undefined reference to uv_prepare_stop' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x3af): 对 uv_close' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x3ba): undefined reference to uv_ref' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x3c5): 对 uv_check_stop' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x3da): undefined reference to uv_close' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x40f): 对 uv_run' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x41a): undefined reference to uv_loop_delete' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x44f): 对 uv_run' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x4f3): undefined reference to uv_timer_init' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x514): 对 uv_unref' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x550): undefined reference to uv_ref' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x558): 对 uv_timer_stop' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x56b): undefined reference to uv_close' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x5d2): 对 uv_timer_start' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x620): undefined reference to uv_ref' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x633): 对 uv_close' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x669): undefined reference to uv_async_init' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x671): 对 uv_unref' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x15f): undefined reference to uv_poll_start' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x1cf): 对 uv_poll_start' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x20b): undefined reference to uv_close' 的未定义引用 C:/Users/Sunway/.conan/data/usockets/0.7.1///package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+ 0x5a7): 对 uv_timer_stop' C:/Users/Sunway/.conan/data/usockets/0.7.1/_/_/package/c8f7ac6f549a378a4f5ea4f08b4f33a70398fa20/lib/libuSockets.a(libuv.o):libuv.c:(.text+0x686): undefined reference to uv_async_send' collect2.exe 的未定义引用:错误:ld 返回 1 退出状态忍者:构建停止:子命令失败。 11:04:58: 进程“C:\Qt\Tools\CMake_64\bin\cmake.exe”退出退出代码1。 错误 在构建/部署项目 rfid-cmd(套件:Desktop Qt 5.15.2 MinGW 32 位)执行步骤“构建”时 11:04:58:经过的时间: 00:05。

解决方法

是否存在链接顺序问题?我看到 usockets 链接在 libuv 后面,也许我们可以尝试交换顺序:先链接 usockets

您使用的是静态链接,而 usockets 依赖于 libuv,因此交换序列将解决问题。

相关问题:

Why does the order in which libraries are linked sometimes cause errors in GCC?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。