【问题标题】:undefined reference to `__imp_*` when using mingw on linux在 Linux 上使用 mingw 时对 `__imp_*` 的未定义引用
【发布时间】:2017-02-14 02:16:06
【问题描述】:

我正在尝试构建 libsigc++ 2.9.3 以使用它在 ubuntu 上使用 mingw 为 Windows 编译其他软件,当我尝试制作它时出现链接器错误:

libtool: link: /usr/bin/x86_64-w64-mingw32-g++  -shared -nostdlib /usr/lib/gcc/x86_64-w64-mingw32/4.9-win32/../../../../x86_64-w64-mingw32/lib/dllcrt2.o /usr/lib/gcc/x86_64-w64-mingw32/4.9-win32/../../../../x86_64-w64-mingw32/lib/crtbegin.o  .libs/signal_base.o .libs/trackable.o .libs/connection.o functors/.libs/slot_base.o adaptors/lambda/.libs/lambda.o    -L/usr/lib/gcc/x86_64-w64-mingw32/4.9-win32 -L/usr/lib/gcc/x86_64-w64-mingw32/4.9-win32/../../../../x86_64-w64-mingw32/lib -lstdc++ -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt /usr/lib/gcc/x86_64-w64-mingw32/4.9-win32/../../../../x86_64-w64-mingw32/lib/crtend.o  -g3 -gdwarf-2   -Wl,-soname -Wl,libsigc-2.0.so.0 -o .libs/libsigc-2.0.so.0.0.0
/usr/lib/gcc/x86_64-w64-mingw32/4.9-win32/../../../../x86_64-w64-mingw32/lib/libmingw32.a(lib64_libmingw32_a-gs_support.o): In function `__security_init_cookie': /build/buildd/mingw-w64-4.0.2/build/x86_64-w64-mingw32-x86_64-w64-mingw32-crt/../../mingw-w64-crt/crt/gs_support.c:62: undefined reference to `__imp_GetSystemTimeAsFileTime'
/build/buildd/mingw-w64-4.0.2/build/x86_64-w64-mingw32-x86_64-w64-mingw32-crt/../../mingw-w64-crt/crt/gs_support.c:70: undefined reference to `__imp_GetCurrentProcessId'
(...)

如何修复此链接器错误,最好无需修复源代码或 makefile?

【问题讨论】:

  • 您是否尝试链接到使用 Visual Studio 编译的库?我知道 __imp_ 被 MSVS 用来表示一个函数是 DLLImport (它在声明中对 __declspec(dllimport) 进行编码),所以它可能与此有关。
  • 你可能会找到一个可能的修复here,它似乎是一个类似的情况。不确定它是否完全一样,但它可能会有所帮助。

标签: c++ linux windows gnu-make mingw-w64


【解决方案1】:

这告诉我您缺少某种标准库,但我不知道是哪个。鉴于这是 MinGW,我认为您需要先检查 ./configure --help 上的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    相关资源
    最近更新 更多