在MFC动态库中,如果包含有boost::thread的相关文件,可能会导致编译时没问题,运行时报错,报错位于ASSERT(AfxGetThread() == NULL)。百度得知,应该是静态链接boost::thread库时,boost::thread库会修改相关函数指针,具体见网页:http://blog.youkuaiyun.com/xiao3131/article/details/39207493。网页上的建议是修改源代码,重新编译。但这样感觉会破坏boost,故没有采用,而是采用在MFC动态库项目中定义宏 BOOST_THREAD_DYN_LINK,强制项目动态链接boost::thread库,其他boost库则默认使用静态链接。问题解决。不过编译时会提示找不到boost::thread的动态库,所以需要编译boost::thread库的动态库版本,即将编译boost库时的 link=static runtime-link=static 改为 link=shared runtime-link=shared
本文介绍了解决MFC动态库中包含Boost.Thread导致的运行时错误问题。通过定义宏BOOST_THREAD_DYN_LINK实现Boost.Thread动态链接,解决了运行时报错的问题。同时,需要编译Boost.Thread的动态库版本。
1856

被折叠的 条评论
为什么被折叠?



