这让我发疯,我正在尝试构建log4cxx库,以便在我一直在使用的c ++项目中使用。我正在运行VS2010 express c ++版的win7主机上。我按照log4cxx指示()的指示,包括下载apr 和apr-util并激活.hw文件,但不幸的是,当我尝试加载log4cxx.dsw解决方案并将其转换为当前的VS时,我收到一个错误,试图构建apr.apr / dsw和一堆其他依赖的.dsw文件。有什么建议吗?
具体来说,我所看到的是:
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?
我看到了一堆其他的.dsp文件。
然后在VC的输出框中:
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.
由于
文件的路径正确。
答案 0 :(得分:23)
您必须按照以下步骤使用log20cxx(版本0.10.0)与VS2010一起使用:
apu.hw
#define APU_HAVE_APR_ICONV
,将其设置为0并保存文件apr_ldap.hw
并找到条目#define APR_HAS_LDAP
,将其设置为0并保存文件。好的,如果你现在点击构建,那么你会看到大约2000个错误,这就是有趣和“硬”部分开始的地方:
一些例子:
// 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;
如果编译器抱怨insert_iterator不在命名空间std中,请将#include <iterator>
添加到源文件的include部分。
最后但并非最不重要的是,右键单击log4cxx项目并选择Add References并选择其他3个项目作为参考
希望这有助于您和其他人:) ...如果您需要整个解决方案或其他文件,请告诉我们!
我在Lex LI的this博客录入的巨大帮助下找到了这些步骤。
修改强> 您可以从我的保管箱下载我的VS2010解决方案和源代码: https://www.dropbox.com/s/rn5d0044jzgzwyf/log4cxx_vs2010.7z
答案 1 :(得分:4)
人们已成功转换log4cxx分两步:
值得庆幸的是,有人在http://www.dreamcubes.com/webdrive/log4cxx_win32/log4cxx-0.10.0-vc2008-June2008.rar作为Visual Studio 2008项目提供了log4cxx 0.10。我已经使用VS 2010 Express成功构建了该项目。
答案 2 :(得分:4)
第1章正式步骤
我们将按照此处的步骤http://logging.apache.org/log4cxx/building/vstudio.html进行操作。但是,我们必须进行更改以适应windows / VS201 *。
从此处下载log4cxx的后续版本,即apache log4cxx 0.10,http://logging.apache.org/log4cxx/download.html
官方建筑指南非常容易理解:
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
2 cmd以上需要sed.exe,在执行之前安装它(gow / git)。 或者您可以手动更改apu.hw和apr_ldap.hw:
打开apr_ldap.hw并找到条目#define APR_HAS_LDAP,将其设置为0并保存文件。 打开apu.hw并找到条目#define APU_HAVE_APR_ICONV,将其设置为0并保存文件
第2章构建Log4cxx
现在我们必须将* .dsw转换为* .cxproj。要使其顺利,只需启动Visual Studio 201 *并打开log4cxx.dsw。 VS会问你是否愿意改变一切。只需单击是。
将log4cxx设置为启动项目。
像这样,
#define LOG4CXX_LIST_DEF(N, T) typedef std::vector<T> N
旧:
#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
你会遇到另一个关于insert_iterator的错误,只需添加#include&lt;迭代&GT;到相对文件
完成!享受你的log4cxx!
答案 3 :(得分:0)
要使用Visual Studio 2015在Windows 7 64位上构建log4cxx,除了Scott的回答之外,我还需要做一些步骤,并做一些澄清。
现在我有三个项目出现在&#34;(Visual Studio 2010)&#34;在他们旁边。由于stdio:
的更改,这导致稍后出现链接错误 4>apr-1.lib(start.obj) : error LNK2001: unresolved external symbol __imp__wenviron
4>apr-1.lib(start.obj) : error LNK2001: unresolved external symbol __imp__environ
4>apr-1.lib(filedup.obj) : error LNK2019: unresolved external symbol __imp___iob_func referenced in function apr_file_dup2
通过转到每个项目的属性并更改&#34;平台工具集&#34>来更改此设置。适用于Visual Studio 2015的所有配置。
"#if defined(_MSC_VER) && !defined(LOG4CXX_STATIC) && defined(LOG4CXX)"
的行更改为"#if defined(_MSC_VER) && _MSC_VER < 1700 && !defined(LOG4CXX_STATIC) && defined(LOG4CXX)"
。"#elif defined(_MSC_VER) && !defined(LOG4CXX_STATIC)"
的行更改为"#elif defined(_MSC_VER) && _MSC_VER < 1700 && !defined(LOG4CXX_STATIC)"
。insert_iterator
中的stringhelper.cpp
。将#include <iterator>
添加到该文件中。然后出现链接错误:
apr-1.lib(rand.obj) : error LNK2019: unresolved external symbol __imp__UuidCreate
要解决此问题,请转到log4cxx属性&gt;链接器&gt;输入并添加rpcrt4.lib
现在解决方案应该构建,并且库将链接到您的64位应用程序。如果您只编辑一个,请重复调试/发布配置。