【发布时间】: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