MFC动态库使用boost::thread运行时报错的问题



    在MFC动态库中,如果包含有boost::thread的相关文件,可能会导致编译时没问题,运行时报错,报错位于ASSERT(AfxGetThread() == NULL)。百度得知,应该是静态链接boost::thread库时,boost::thread库会修改相关函数指针,具体见网页:http://blog.csdn.net/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 

展开阅读全文

没有更多推荐了,返回首页