C++ 构建log4cxx时发生C2252错误
Visual Studio 2012中的建筑, 4月1日4月8日 APR-UTIL 1.5.2 Log4cxx 0.10 运行配置和配置apr 然后在VS中打开,得到111个C2252错误(来自宏):C++ 构建log4cxx时发生C2252错误,c++,visual-studio-2012,build,log4cxx,C++,Visual Studio 2012,Build,Log4cxx,Visual Studio 2012中的建筑, 4月1日4月8日 APR-UTIL 1.5.2 Log4cxx 0.10 运行配置和配置apr 然后在VS中打开,得到111个C2252错误(来自宏): // //使用VC构建DLL时的指针和列表定义宏 // #如果定义了(\u MSC\u VER)&&!已定义(LOG4CXX_静态)和已定义(LOG4CXX) #定义LOG4CXX_PTR_DEF(T)\ 模板类LOG4CXX_导出LOG4CXX::helpers::ObjectPtrT\ typ
//
//使用VC构建DLL时的指针和列表定义宏
//
#如果定义了(\u MSC\u VER)&&!已定义(LOG4CXX_静态)和已定义(LOG4CXX)
#定义LOG4CXX_PTR_DEF(T)\
模板类LOG4CXX_导出LOG4CXX::helpers::ObjectPtrT\
typedef log4cxx::helpers::ObjectPtrT T##Ptr
#定义LOG4CXX_列表_DEF(N,T)\
模板类LOG4CXX_导出标准::分配器\
模板类LOG4CXX_导出std::vector\
typedef std::vector N
你知道我该怎么做吗 删除以“template”开头的两行可以解决这个问题 删除此项:
template class LOG4CXX_EXPORT std::allocator<T>; \
template class LOG4CXX_EXPORT std::vector<T>; \
模板类LOG4CXX\u导出标准::分配器\
模板类LOG4CXX_导出std::vector\
查看此错误报告:
解决方案概述:
编辑/src/main/cpp/stringhelper.cpp,添加:
#include <iterator>
#包括
编辑/src/main/include/log4cxx/log4cxx.hw,
删除以下行:
template class LOG4CXX_EXPORT std::allocator<T>; \
template class LOG4CXX_EXPORT std::vector<T>; \
extern template class LOG4CXX_EXPORT std::allocator<T>; \
extern template class LOG4CXX_EXPORT std::vector<T>; \
模板类LOG4CXX\u导出标准::分配器\
模板类LOG4CXX_导出std::vector\
外部模板类LOG4CXX_导出标准::分配器\
外部模板类LOG4CXX_导出标准::向量\
这个错误是由于VC++中的一个bug引起的,可以解决这个bug
将显示错误C2252 LOGCXX-366上的链接补丁建议也添加“#include”。这篇文章帮助我摆脱了流沙。。
template class LOG4CXX_EXPORT std::allocator<T>; \
template class LOG4CXX_EXPORT std::vector<T>; \
extern template class LOG4CXX_EXPORT std::allocator<T>; \
extern template class LOG4CXX_EXPORT std::vector<T>; \