c++ - 与 boost 日志的链接错误

标签 c++ visual-c++ boost

尝试编译一个boost log(1.55)的例子,却弹出这样的链接错误

main.obj : error LNK2019: unresolved external symbol "void __cdecl boost::log::v2s_mt_nt5::aux::code_convert(unsigned short const *,unsigned int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::locale const &)" (?code_convert@aux@v2s_mt_nt5@log@boost@@YAXPBGIAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABVlocale@6@@Z) referenced in function "private: void __thiscall boost::log::v2s_mt_nt5::basic_formatting_ostream<char,struct std::char_traits<char>,class std::allocator<char> >::aligned_write<unsigned short>(unsigned short const *,int)" (??$aligned_write@G@?$basic_formatting_ostream@DU?$char_traits@D@std@@V?$allocator@D@2@@v2s_mt_nt5@log@boost@@AAEXPBGH@Z)

简化后的代码

#include <fstream>

#include <boost/smart_ptr/shared_ptr.hpp>
#include <boost/smart_ptr/make_shared_object.hpp>
#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/sinks/sync_frontend.hpp>
#include <boost/log/sinks/text_ostream_backend.hpp>
#include <boost/log/sources/logger.hpp>
#include <boost/log/sources/record_ostream.hpp>

namespace logging = boost::log;
namespace src = boost::log::sources;
namespace sinks = boost::log::sinks;

void init()
{
    // Construct the sink
    typedef sinks::synchronous_sink< sinks::text_ostream_backend > text_sink;
    boost::shared_ptr< text_sink > sink = boost::make_shared< text_sink >();
}

int main()
{        

    return 0;
}

这是我的qmake文件

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

BOOST_LIB_PATH += G:/Tools/3rdLibs/boost/boost_1_55_0/lib32-msvc-9.0

INCLUDEPATH += G:/Tools/3rdLibs/boost/boost_1_55_0

QMAKE_CFLAGS_RELEASE += /MT
QMAKE_CXXFLAGS_RELEASE += /MT

LIBS += $${BOOST_LIB_PATH}/libboost_date_time-vc90-mt-s-1_55.lib
LIBS += $${BOOST_LIB_PATH}/libboost_chrono-vc90-mt-s-1_55.lib
LIBS += $${BOOST_LIB_PATH}/libboost_system-vc90-mt-s-1_55.lib
LIBS += $${BOOST_LIB_PATH}/libboost_filesystem-vc90-mt-s-1_55.lib
LIBS += $${BOOST_LIB_PATH}/libboost_thread-vc90-mt-s-1_55.lib

LIBS += $${BOOST_LIB_PATH}/libboost_log_setup-vc90-mt-s-1_55.lib
LIBS += $${BOOST_LIB_PATH}/libboost_log-vc90-mt-s-1_55.lib

SOURCES += main.cpp

由vc2008、win7 32位编译

我们的应用程序正在使用 MT,我不能使用动态链接

最佳答案

问题解决了,需要定义

QMAKE_CFLAGS = -Zc:wchar_t
QMAKE_CXXFLAGS = -Zc:wchar_t

在您的代码中。

但我不知道这会不会引起什么麻烦

关于c++ - 与 boost 日志的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24906597/

相关文章:

c++ - 错误 : names the constructor, 不是类型。使用 g++4.6.1 编译时

c++ - MSVC 2010 模板编译器问题

c++ - 内联结构声明

c++ - 访问使用 def 文件导出的静态变量时崩溃

c++ - 无法编译摩西(对 boost::... 的 undefined reference )

c# - C++ 中的 Google ProtoBuf 与 C# 中的 Protobuf-net 聊天(UDP)

c++ - fatal error LNK1127 : library is corrupt --> after adding extern "C" to function prototype

c++ - 读取一些整数然后在 C++ 中读取一行文本

c++ - "still reachable"和 "possibly lost" block 的 C++ 中的 valgrind 输出不引用我的来源

c++ - boost socket读写函数线程安全吗?