C++ e目录并在您选择的文本编辑器中打开apu.hw。找到条目#define APU_HAVE_APR_ICONV,将其设置为0并保存文件。从同一目录打开apr_ldap.hw并找到条目#define apr_HAS_ldap,将其设置为0并保存文件 从GNUWin32安装sed并将其添加到路径中,然后从Windows命令提示符下的log4cxx目录运行“configure aprutil” 通过在git Bash提示符下从log4cxx目录运行“configure aprutil”,使用Windows git安装附带的sed 打开Visual Studio 2015。从项目目录中打开项目log4cxx.dsw。让VisualStudio转换它 将log4cxx设置为启动项目,并检查其他3个项目是否显示为依赖项(右键单击->构建依赖项->项目依赖项)
现在我有三个项目出现在它们旁边的“(VisualStudio2010)”。由于stdio中的更改,这导致了一个链接错误:C++ e目录并在您选择的文本编辑器中打开apu.hw。找到条目#define APU_HAVE_APR_ICONV,将其设置为0并保存文件。从同一目录打开apr_ldap.hw并找到条目#define apr_HAS_ldap,将其设置为0并保存文件 从GNUWin32安装sed并将其添加到路径中,然后从Windows命令提示符下的log4cxx目录运行“configure aprutil” 通过在git Bash提示符下从log4cxx目录运行“configure aprutil”,使用Windows git安装附带的sed 打开Visual Studio 2015。从项目目录中打开项目log4cxx.dsw。让VisualStudio转换它 将log4cxx设置为启动项目,并检查其他3个项目是否显示为依赖项(右键单击->构建依赖项->项目依赖项),c++,visual-c++,log4cxx,C++,Visual C++,Log4cxx,现在我有三个项目出现在它们旁边的“(VisualStudio2010)”。由于stdio中的更改,这导致了一个链接错误: 4>apr-1.lib(start.obj):错误LNK2001:未解析的外部符号 4> apr-1.lib(start.obj):错误LNK2001:未解析的外部符号\uuu imp\uu环境 4> apr-1.lib(filedup.obj):错误LNK2019:函数apr\u file\u dup2中引用的未解析外部符号 通过转到每个项目的属性并将所有配置的“平台工具集
4>apr-1.lib(start.obj):错误LNK2001:未解析的外部符号
4> apr-1.lib(start.obj):错误LNK2001:未解析的外部符号\uuu imp\uu环境
4> apr-1.lib(filedup.obj):错误LNK2019:函数apr\u file\u dup2中引用的未解析外部符号
通过转到每个项目的属性并将所有配置的“平台工具集”更改为Visual Studio 2015来更改此设置
解决方案现在配置为32位。转到构建>配置管理器。将平台更改为x64。其中三个项目将改变,但log4cxx仍然表示Win32。单击该按钮并转到“新建…”。。。添加x64并取消选中“创建新的解决方案平台”。单击“确定”。确保选中了所有4个项目的“构建”
如果您现在构建,您将看到c2252模板错误。打开log4cxx.h
- 将包含
“#if defined(_MSC_VER)和&!defined(LOG4CXX_STATIC)和&defined(LOG4CXX)”的行更改为“#if defined(_MSC_VER)和&!defined(LOG4CXX静态)和&defined(LOG4CXX)”
- 将包含
“#elif defined(#MSC_VER)和&!defined(LOG4CXX_STATIC)”的行更改为“#elif defined(#MSC_VER)和&&!defined(LOG4CXX_STATIC)”
下一个错误是关于stringhelper.cpp
中的insert\u iterator
。将#include
添加到该文件中
然后出现链接错误:
apr-1.lib(rand.obj):错误LNK2019:未解析的外部符号\uuuu imp\uuuuuIdCreate
要解决此问题,请转到log4cxx属性>链接器>输入并添加rpcrt4.lib
现在,解决方案应该可以构建,并且库将链接到您的64位应用程序。如果您只编辑了一个调试/发布配置,请重复此步骤
(可选)该解决方案不会向调试库添加通用的“d”后缀。要添加它,请打开调试配置的属性。转到链接器>常规>输出文件并重置为默认值。转到链接器>高级>导入库并重置为默认值。对发布配置也要这样做,以便它们将构建到相应的目录。仅对于调试配置,请转到“常规”,并在目标名称的末尾添加一个“d”
log4cxx是一个死项目吗?@seveves你好,你能重新上传源代码吗?比2010年晚一点的Visual Studio怎么样?有没有更简单的方法?谢谢你的回答。你还记得链接更新后使用的apr和apr util的正确版本吗?@AndreaRossi我使用的是apr 1.5.2和apr util 1.5.4汉克斯。你能分享这个项目的源代码吗?
The Project file 'C:\...projects\apr-util\xml\expat\lib\xml.dsp' cannot be loaded. Do you want to remove the unloadable project from the solution?
C:\Users\x\Documents\Visual Studio 2010\Projects\apr\apr.dsp : error : Project upgrade failed.
C:\Users\x\Documents\Visual Studio 2010\Projects\apr-util\xml\expat\lib\xml.dsp : error : Project upgrade failed.
C:\Users\x\Documents\Visual Studio 2010\Projects\apr-util\aprutil.dsp : error : Project upgrade failed.
C:\Users\x\Documents\Visual Studio 2010\Projects\apache-log4cxx-0.10.0\projects\log4cxx.dsp : error : Project upgrade failed.
// telnetadapter.h
...
typedef log4cxx::helpers::SocketPtr Connection;
LOG4CXX_LIST_DEF(ConnectionList, Connection);
class LOG4CXX_EXPORT TelnetAppender : public AppenderSkeleton
...
// appender.h
...
class Appender;
LOG4CXX_PTR_DEF(Appender);
LOG4CXX_LIST_DEF(AppenderList, AppenderPtr);
class Layout;
typedef log4cxx::helpers::ObjectPtrT<Layout> LayoutPtr;
...
class LOG4CXX_EXPORT Appender :
public virtual spi::OptionHandler
{
...
// old
LoggingEvent::KeySet set;
// new
KeySet set;
unzip apr-1.2.11-win32-src.zip
rename apr-1.2.11 apr
unzip apr-util-1.2.10-win32-src.zip
rename apr-util-1.2.10 apr-util
cd apache-log4cxx-0.10.0
configure
configure-aprutil
configure
configure-aprutil
#define LOG4CXX_LIST_DEF(N, T) \
template class LOG4CXX_EXPORT std::allocator<T>; \
template class LOG4CXX_EXPORT std::vector<T>; \
typedef std::vector<T> N
#define LOG4CXX_LIST_DEF(N, T) typedef std::vector<T> N