zoukankan      html  css  js  c++  java
  • 编译jsoncpp库以及要注意的问题

    原创文章,转载请注明原作者与本文原始URL。


    版本:
    jsoncpp-src-0.5.0.zip
    简介:
    jsoncpp是用cpp实现的json库,可以拼装,解析,生成json串。
    我们要把他编译成动态库。
    这个库使用 scons 来组织工程的,并且要用python编译,而不是我熟悉的Makefile.
    要编译的文件全部位于 ./src/lib_json,其实就3个.cpp文件。
    为了编译方便,我自己写了Makefile如下:

    g++ json_reader.cpp json_value.cpp json_writer.cpp -fPIC -Wall -shared -o ../../build/x64/release/libjson.so -I../../include -I.

    编译windows版本:

    编译windows的时候需要自己建立工程,我用的vs2010,生成动态库要记得预定义导出宏,JSON_DLL_BUILD ,这样才能让dll导出接口类。
    在config.h中导出的类是这样定义的:  define JSON_API __declspec(dllexport) 

    编译windows版注意的问题:
    在此之间有个插曲,如下的代码:

    int main(int argc,char* argv[])
    {
        Json::Reader reader;
        return 0;
    }

    居然在析构 Reader的时候会崩溃,而linux版本完全没问题啊,看来是编译的库有问题。
    最后发现原因是,用vs编译的时候,把工程配置的“配置类型”有静态库改成动态库,这样出来的动态库是有问题的。
    解决方法:
    重新建立一个动态库工程,重新添加源码,编译,然后可以正常使用了。
    这次生成的库的大小都比旧的小了不少,看来确实不一样。
    总结:
    用vs编译动态库,要用向导建立动态库工程;而不能简单的把“配置类型”改成动态库,否则虽然编译没问题,但是运行会有问题。

    原创文章,转载请注明原作者与本文原始URL。

  • 相关阅读:
    HDU 5775 Bubble Sort
    HDU 5763 Another Meaning
    HDU 5773 The All-purpose Zero
    HDU 5768 Lucky7
    HDU 5769 Substring
    SPOJ 705 New Distinct Substrings
    POJ 3261 Milk Patterns
    HDU 1521 排列组合 指数型母函数
    HDU 1023 Traning Problem (2) 高精度卡特兰数
    HDU 2082 母函数模板题
  • 原文地址:https://www.cnblogs.com/zhaojk2010/p/5764396.html
Copyright © 2011-2022 走看看