gpt4 book ai didi

c++ - 在 vs 2010 c++ 中构建 log4cxx

转载 作者:可可西里 更新时间:2023-11-01 14:53:43 25 4
gpt4 key购买 nike

这让我抓狂,我正在尝试构建 log4cxx 库以便在我一直使用的 c++ 项目中使用。我在运行 VS2010 express c++ 版本的 win7 主机上。我已按照 log4cxx 说明 ( ) 的说明进行操作,包括下载 apr和 apr-util 和 motifyying .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.

谢谢

文件位于正确的路径中。

最佳答案

您必须按照以下步骤使 log4cxx(版本 0.10.0)与 VS2010 一起工作:

  1. here 下载最新的 log4cxx 包
  2. here 下载 apr 和 apr-util ZIP 包
  3. 将 log4cxx、apr 和 apr-util 提取到同一目录
  4. 将 apr_VERSION 和 apr-util_VERSION 文件夹重命名为 apr 和 apr-util,生成一个包含三个文件夹的目录:apache-log4cxx-0.10.0、apr 和 apr-util
  5. 进入log4cxx目录,执行configure.bat
  6. 更改为 apr-util/include 目录并打开 apu.hw在您选择的文本编辑器中
  7. 找到条目 #define APU_HAVE_APR_ICONV , 设置为 0 并保存文件
  8. 打开apr_ldap.hw从同一目录中找到条目 #define APR_HAS_LDAP , 将其设置为 0 并保存文件。
  9. 切换到 log4cxx/projects 目录并使用 VS2010 打开 log4cxx.dsw。对每个项目(apr、apr-util、log4cxx、xml)用yes/ok回答VS2010的转换提示

好的,如果您现在点击构建,那么您将看到大约 2000 个错误,这就是有趣且“困难”的部分开始的地方:

  • Ctrl+F 并找到“LOG4CXX_LIST_DEF”宏的每个条目。您必须将这些条目从其相关类中移出并移到同一类之前。有时您也需要移动 typedef 或在宏之前添加类。

一些例子:

    // 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
{
...
  • 如果编译器提示 KeySet 不是 LoggingEvent 的成员,只需删除作用域(因为我们在上一步中将类型移到了类外部,这些类型不再在类内部)

示例:

   // old
LoggingEvent::KeySet set;
// new
KeySet set;
  • 如果编译器提示 insert_iterator 不在命名空间 std 中,请添加 #include <iterator>到源文件的包含部分。

  • 最后但同样重要的是,右键单击 log4cxx 项目并选择添加引用,然后选择其他 3 个项目作为引用


希望这对您和其他人有帮助 :) ...如果您需要整个解决方案或其他文件,请告诉我!

我在 this 的巨大帮助下弄清楚了这些步骤Lex LI 的博客条目。

编辑:您可以从我的保管箱下载我的 VS2010 解决方案和源代码: https://www.dropbox.com/s/rn5d0044jzgzwyf/log4cxx_vs2010.7z

关于c++ - 在 vs 2010 c++ 中构建 log4cxx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com