使用MinGW编译Boost时遇到的函数未定义问题

Polarix 发布于 2018/06/07 21:47
阅读 265
收藏 0

请教诸位一个问题,最近需要使用到哦Boost库,在Windows10上使用MinGW编译时遇到一个提示函数未定义的问题,看上去像是没有引用到MinGW系统函数库,请教一下,各位有没有遇到过类似的问题,如何解决,谢谢。

我的编译步骤如下:

1、部署Mingw,控制台下输入gcc -v命令能够正确显示版本信息。

2、解压Boost,并在解压目录下执行bootstrap gcc命令,执行结果如图,显示为找不到函数UnregisterWait和RegisterWaitForSingleObject的定义。

如果有知道的还请不吝赐教,谢谢。

以下是问题补充:

@Polarix:GCC版本是TDM-GCC5.1.0,Boost是官方下载的1.67.0。 (2018/06/10 10:36)
加载中
1
Force武装卫队
Force武装卫队

既然用到了 MinGW 可以使用 MSYS2 pacman -Ss boost 

上述 RegisterWaitForSingleObject UnregisterWait 头文件在 WinBase.h,符号在 Kernel32.lib(Mingw libkernel32.a ?)。

一般不会出现上述问题,你先可以用 gcc -v 弄个程序 dump 一下环境,然后看 boost 的 readme, 构建是否符合要求。

See: https://msdn.microsoft.com/en-us/library/windows/desktop/ms685061(v=vs.85).aspx

0
土卫十六
土卫十六

gcc 版本不说,boost版本不说?Makefile文件是哪个?

0
P
Polarix

引用来自“土卫十六”的评论

gcc 版本不说,boost版本不说?Makefile文件是哪个?

GCC版本是TDM-GCC5.1.0,Boost是官方下载的1.67.0。

0
P
Polarix

引用来自“Force武装卫队”的评论

既然用到了 MinGW 可以使用 MSYS2 pacman -Ss boost 

上述 RegisterWaitForSingleObject UnregisterWait 头文件在 WinBase.h,符号在 Kernel32.lib(Mingw libkernel32.a ?)。

一般不会出现上述问题,你先可以用 gcc -v 弄个程序 dump 一下环境,然后看 boost 的 readme, 构建是否符合要求。

See: https://msdn.microsoft.com/en-us/library/windows/desktop/ms685061(v=vs.85).aspx

使用gcc -v命令后,确实MinGW-w64的dump内容比TDM-GCC要多很多,貌似携带了很多的默认参数。

但是现在因为使用别的库,对编译器版本有要求,只能使用TDM-GCC5.1.0版本。

请问一下这个有办法解决吗?如果要改Boost的Makefile的话该如何下手?

谢谢。

返回顶部
顶部