Sim*_*lan 3 log4cxx visual-studio-2013
我正在尝试在 Visual Studio 2013 下构建 log4cxx 版本 0.10.0。我已完成在 vs 2010 c++ 中构建 log4cxx中指定的所有修复。
但是,当尝试创建 log4cxx.lib 时,它现在在链接阶段失败,并出现以下错误:
unresolved external symbol __InterlockedIncrement referenced in function _apr_atomic_inc32@4
unresolved external symbol __InterlockedExchangeAdd referenced in function _apr_atomic_add32@8
unresolved external symbol __InterlockedExchange referenced in function _apr_atomic_set32@8
unresolved external symbol __InterlockedDecrement referenced in function _apr_atomic_dec32@4
unresolved external symbol __InterlockedCompareExchange referenced in function _apr_atomic_cas32@12
Run Code Online (Sandbox Code Playgroud)
根据MSDN,这些函数应该在kernel32.lib中,我已将其添加到链接器中,但没有效果。查看 ht elib,这似乎包含_InterlockedIncrement(单下划线)和_imp_InterlockedIncrement
有谁知道我能做些什么来让它工作?
此外, Building log4cxx with VS 2012 on Windows 7中建议的修复 不会产生任何不同
以下过程是在 VS2013 下构建 Log4CXX 的完整过程,适用于 32 位和 64 位构建。请注意,32 位版本经过了非常简单的测试,64 位版本经过了稍微更广泛的测试(IE,这是我们正在使用的版本)。
\n\napache-log4cxx-0.10.0.zip、、 、apr-x.y.z-win32.src.zip和是最新版本。apr-util-1.5.4-win32.src.zipxyzapr-x.y.z并apr-utls-x.y.z删除版本号。log4cxx. 见下文。对于 32 位版本,修补apr\\atomic\\win32\\apr_atomic.c.
将所有出现的替换defined(_M_IA64) || defined(_M_AMD64))为defined(_M_IA64) || defined(_M_AMD64) || (_MSC_VER == 1800))
这实际上只是一个临时修复,但它确实有效。
apache-log4cxx-0.10.0\\configure.bat。apr-util。\ninclude\\apu.hw,更改APU_HAVE_APR_ICONV为定义为 0。include\\apr_ldap.hw,更改APR_HAS_LDAP为定义为 0。apache-log4cxx-0.10.0\\projects\\log4cxx.dsw到 Visual Studio 2013。系统将提示您升级项目。接受并等待转换完成。这将创建log4cxx.sln您下次打开项目时应该使用的Build->Configuration Manager。log4cxx为发布和调试创建 x64 项目上下文。检查这些项目的构建框。Upgrade VC++ compiler ...。log4cxx项目,然后选择properties。\nDebug / All platforms配置设置。Configuration Properties / General / Target name为以“_d”作为文件名结尾。Linker / All Options / Output File为以“_d”作为文件名结尾。Linker / All Options / Import Library为以“_d”作为文件名结尾。Build -> Configuration manager。下面是log4cxx.
diff -r .\\archives\\apache-log4cxx-0.10.0/src/main/cpp/loggingevent.cpp .\\build_official_2\\apache-log4cxx-0.10.0/src/main/cpp/loggingevent.cpp\n127c127\n< LoggingEvent::KeySet LoggingEvent::getMDCKeySet() const\n---\n> KeySet LoggingEvent::getMDCKeySet() const\n129c129\n< LoggingEvent::KeySet set;\n---\n> KeySet set;\n188c188\n< LoggingEvent::KeySet LoggingEvent::getPropertyKeySet() const\n---\n> KeySet LoggingEvent::getPropertyKeySet() const\n190c190\n< LoggingEvent::KeySet set;\n---\n> KeySet set;\ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/cpp/propertiespatternconverter.cpp .\\build_official_2\\apache-log4cxx-0.10.0/src/main/cpp/propertiespatternconverter.cpp\n62c62\n< LoggingEvent::KeySet keySet(event->getMDCKeySet());\n---\n> KeySet keySet(event->getMDCKeySet());\n64c64\n< for(LoggingEvent::KeySet::const_iterator iter = keySet.begin();\n---\n> for(KeySet::const_iterator iter = keySet.begin();\ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/cpp/xmllayout.cpp .\\build_official_2\\apache-log4cxx-0.10.0/src/main/cpp/xmllayout.cpp\n104,105c104,105\n< LoggingEvent::KeySet propertySet(event->getPropertyKeySet());\n< LoggingEvent::KeySet keySet(event->getMDCKeySet());\n---\n> KeySet propertySet(event->getPropertyKeySet());\n> KeySet keySet(event->getMDCKeySet());\n109c109\n< for (LoggingEvent::KeySet::const_iterator i = keySet.begin();\n---\n> for (KeySet::const_iterator i = keySet.begin();\n123c123\n< for (LoggingEvent::KeySet::const_iterator i2 = propertySet.begin();\n---\n> for (KeySet::const_iterator i2 = propertySet.begin();\ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/include/log4cxx/asyncappender.h .\\build_official_2\\apache-log4cxx-0.10.0/src/main/include/log4cxx/asyncappender.h\n52a53\n> LOG4CXX_LIST_DEF(LoggingEventList, log4cxx::spi::LoggingEventPtr);\n197c198\n< LOG4CXX_LIST_DEF(LoggingEventList, log4cxx::spi::LoggingEventPtr);\n---\n> \ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/include/log4cxx/helpers/bytearrayinputstream.h .\\build_official_2\\apache-log4cxx-0.10.0/src/main/include/log4cxx/helpers/bytearrayinputstream.h\n38a39\n> LOG4CXX_LIST_DEF(ByteList, unsigned char);\n42c43\n< LOG4CXX_LIST_DEF(ByteList, unsigned char);\n---\n> \ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/include/log4cxx/helpers/bytearrayoutputstream.h .\\build_official_2\\apache-log4cxx-0.10.0/src/main/include/log4cxx/helpers/bytearrayoutputstream.h\n40a41\n> LOG4CXX_LIST_DEF(ByteList, unsigned char);\n44c45\n< LOG4CXX_LIST_DEF(ByteList, unsigned char);\n---\n> \ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/include/log4cxx/helpers/simpledateformat.h .\\build_official_2\\apache-log4cxx-0.10.0/src/main/include/log4cxx/helpers/simpledateformat.h\n45a46\n> LOG4CXX_LIST_DEF(PatternTokenList, log4cxx::helpers::SimpleDateFormatImpl::PatternToken*);\n78c79\n< LOG4CXX_LIST_DEF(PatternTokenList, log4cxx::helpers::SimpleDateFormatImpl::PatternToken*);\n---\n> \ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/include/log4cxx/helpers/socketoutputstream.h .\\build_official_2\\apache-log4cxx-0.10.0/src/main/include/log4cxx/helpers/socketoutputstream.h\n35c35\n< \n---\n> LOG4CXX_LIST_DEF(ByteList, unsigned char);\n53c53\n< LOG4CXX_LIST_DEF(ByteList, unsigned char);\n---\n> \n\ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/include/log4cxx/net/sockethubappender.h .\\build_official_2\\apache-log4cxx-0.10.0/src/main/include/log4cxx/net/sockethubappender.h\n105c105\n< \n---\n> LOG4CXX_LIST_DEF(ObjectOutputStreamList, log4cxx::helpers::ObjectOutputStreamPtr);\n115c115\n< LOG4CXX_LIST_DEF(ObjectOutputStreamList, log4cxx::helpers::ObjectOutputStreamPtr);\n---\n> \ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/include/log4cxx/net/telnetappender.h .\\build_official_2\\apache-log4cxx-0.10.0/src/main/include/log4cxx/net/telnetappender.h\n67c67,69\n< class LOG4CXX_EXPORT TelnetAppender : public AppenderSkeleton\n---\n> typedef log4cxx::helpers::SocketPtr Connection;\n> LOG4CXX_LIST_DEF(ConnectionList, Connection);\n> class LOG4CXX_EXPORT TelnetAppender : public AppenderSkeleton\n134,135d135\n< typedef log4cxx::helpers::SocketPtr Connection;\n< LOG4CXX_LIST_DEF(ConnectionList, Connection);\ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/include/log4cxx/patternlayout.h .\\build_official_2\\apache-log4cxx-0.10.0/src/main/include/log4cxx/patternlayout.h\n326a327,328\n> LOG4CXX_LIST_DEF(LoggingEventPatternConverterList, log4cxx::pattern::LoggingEventPatternConverterPtr);\n> LOG4CXX_LIST_DEF(FormattingInfoList, log4cxx::pattern::FormattingInfoPtr);\n337c339\n< LOG4CXX_LIST_DEF(LoggingEventPatternConverterList, log4cxx::pattern::LoggingEventPatternConverterPtr);\n---\n> \n343c345\n< LOG4CXX_LIST_DEF(FormattingInfoList, log4cxx::pattern::FormattingInfoPtr);\n---\n> \n\ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/include/log4cxx/rolling/rollingpolicybase.h .\\build_official_2\\apache-log4cxx-0.10.0/src/main/include/log4cxx/rolling/rollingpolicybase.h\n44a45,46\n> LOG4CXX_LIST_DEF(PatternConverterList, log4cxx::pattern::PatternConverterPtr);\n> LOG4CXX_LIST_DEF(FormattingInfoList, log4cxx::pattern::FormattingInfoPtr);\n60c62\n< LOG4CXX_LIST_DEF(PatternConverterList, log4cxx::pattern::PatternConverterPtr);\n---\n> \n66c68\n< LOG4CXX_LIST_DEF(FormattingInfoList, log4cxx::pattern::FormattingInfoPtr);\n---\n> \ndiff -r .\\archives\\apache-log4cxx-0.10.0/src/main/include/log4cxx/spi/loggingevent.h .\\build_official_2\\apache-log4cxx-0.10.0/src/main/include/log4cxx/spi/loggingevent.h\n54a55\n> LOG4CXX_LIST_DEF(KeySet, LogString);\n155c156\n< LOG4CXX_LIST_DEF(KeySet, LogString);\n---\n> \nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4061 次 |
| 最近记录: |