VC6+STLport-5.1.0编译log4cpp-0.3.4b


将VC6的stl库与IOStream替换为2006年底最新发布的STLport-5.1.0后,需要重新编译原来的log4cpp库。
原来的log4cpp库版本为0.3.4b,一直用着,暂时没有升级版本的需要。
(log4cpp最新版本0.3.5rc3要改多处代码才能在VC下编译,感觉不是一个可发布的版本,也没有什么实质性更新。)

不过发现原来通过编译的log4cpp-0.3.4b有编译错误,需要更改才能通过。

* msthreads.cpp(10) : error C2065: 'sprintf' : undeclared identifier
添加 #include <stdio.h>

* patternlayout.cpp(195) : error C2593: 'operator <<' is ambiguous
原因是为了绕过VC6的 operator << __int64 缺陷,自定义'<<',见文件头部。
需要关闭 LOG4CPP_MISSING_INT64_OSTREAM_OP 宏定义来禁止自定义。
搜索到:config-win32.h(23):#define LOG4CPP_MISSING_INT64_OSTREAM_OP
将其注释掉。

* rollingfileappender.cpp(73) : error C2065: 'SEEK_END' : undeclared identifier
添加 #include <stdio.h>

现在编译是通过了,不过还有一个Bug,应该是STLport的Bug。
RollingFileAppender.cpp(62):
                oldName.seekp(n, std::ios::beg);

在log4cpp0.3.5rc3中为STLport作如下补丁(不知为什么STLport-5.1.0还未作修正):

#ifndef LOG4CPP_STLPORT_AND_BOOST_BUILD
                oldName.seekp(static_cast<std::ios::off_type>(n), std::ios::beg);
#else
                // the direction parameter is broken in STLport 4.5.3,
                // so we don't specify it (the code works without it)
                oldName.seekp(n);
#endif

直接改为:
                oldName.seekp(n);
就好了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Unity编辑器中,可以通过以下步骤导出Android Export Project: 1. 在菜单栏中选择 File -> Build Settings。 2. 选择 Android 平台,并点击 Switch Platform。 3. 点击 Player Settings,进入项目设置页面。 4. 在 Player Settings 中,选择 Other Settings 选项卡,然后找到 Export Project 选项。 5. 勾选 Export Project 选项,并指定导出路径。 6. 点击 Build,等待项目导出完成。 完成导出后,可以使用以下命令行来执行Il2Cpp编译: 1. 打开命令行工具,并进入导出项目的根目录。 2. 进入项目的 libs/armeabi-v7a 目录,可以看到 libil2cpp.so 文件。 3. 在 libs/armeabi-v7a 目录下创建一个名为 il2cpp_cache 的空目录。 4. 使用以下命令行执行 Il2Cpp 编译: ``` "<Unity安装目录>/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/il2cpp/il2cpp.exe" \ --platform=android \ --architecture=armv7 \ --sdk-version=<SDK版本号> \ --libil2cpp-static \ --output-dir=<输出目录> \ --cachedirectory=il2cpp_cache \ --additional-include-directories="<Unity安装目录>/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/stlport/stlport" \ --generatedcppdir=il2cppOutput \ --compile-cpp \ --development \ --runtime-version=<Unity版本号> \ --metadata-version=24 \ --no-symbol-map \ --strip-engine-symbols \ --enable-stacktrace \ --llvm-config="<Unity安装目录>/Editor/Data/PlaybackEngines/AndroidPlayer/NDK/toolchains/llvm/prebuilt/<平台>/bin/llvm-config" \ --linker-flags="-llog -rdynamic" \ "<导出项目根目录>/libs/armeabi-v7a/libil2cpp.so" ``` 其中,需要替换以下参数: - `<Unity安装目录>`: Unity 编辑器的安装目录。 - `<SDK版本号>`: Android SDK 的版本号。 - `<输出目录>`: 编译后的输出目录。 - `<Unity版本号>`: 使用的 Unity 版本号。 - `<平台>`: 选择对应的平台,如 windows-x86_64。 执行成功后,会在 `<输出目录>` 中生成相应的编译结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值