msgpack-c使用指南

msgpack

MessagePack 是一种高效的二进制序列化格式,可在多种语言之间交换数据,但它更快、更小。小整数被编码为单个字节,而短字符串除了字符串本身之外只需要一个额外的字节。

msgpackcxx使用指南

msgpackcxx是一个纯头文件库。
安装指南:

git clone https://github.com/msgpack/msgpack-c.git
cd msgpack-c
git checkout cpp_master
mkdir build && cd build
mkdir install_output  # 安装到指定目录,然后复制集成到自己的项目中
cmake -DMSGPACK_CXX14=ON -DCMAKE_INSTALL_PREFIX=./install_output -DMSGPACK_USE_BOOST=OFF ..  # 去掉对boost的依赖、使用c++14
cmake --build . --target install

安装后会在install_output目录出现includelib,复制到自己项目的thirdparty/msgpack下。

CMakeLists.txt 参考如下:

# add_definitions(-DMSGPACK_USE_BOOST=OFF)
set(MSGPACK_LOCAL_DIR "${PROJECT_ROOT_DIR}/thirdparty/msgpack-c")
set(Msgpackcxx_DIR "${MSGPACK_LOCAL_DIR}/lib/cmake/msgpack-cxx")
find_package(msgpack-cxx REQUIRED NO_DEFAULT_PATH PATHS ${Msgpackcxx_DIR})
set(MSGPACK_INCLUDE_DIRS "${MSGPACK_LOCAL_DIR}/include")
include_directories(${MSGPACK_INCLUDE_DIRS})

add_executable(test_msgpack test.cpp)
target_link_libraries(test_msgpack PRIVATE msgpack-cxx)

test.cpp

#include <msgpack.hpp>
#include <vector>
#include <string>
#include <iostream>

int main(void) {
        // serializes this object.
        std::vector<std::string> vec;
        vec.push_back("Hello");
        vec.push_back("MessagePack");

        // serialize it into simple buffer.
        msgpack::sbuffer sbuf;
        msgpack::pack(sbuf, vec);

        // deserialize it.
        msgpack::object_handle oh =
            msgpack::unpack(sbuf.data(), sbuf.size());

        // print the deserialized object.
        msgpack::object obj = oh.get();
        std::cout << obj << std::endl;  //=> ["Hello", "MessagePack"]

        // convert it into statically typed object.
        std::vector<std::string> rvec;
        obj.convert(rvec);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值