JSON解析-开源jsoncpp---动态链接库生成

2024-02-22 03:32

本文主要是介绍JSON解析-开源jsoncpp---动态链接库生成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境

vs2010 ,下载和编译使用静态链接库可以参考这篇文章C++的Json解析库:jsoncpp和boost

由于上面的只是说了生成静态库的过程,使用静态库在我原来都是使用静态库的工程中,行不通,原因就是因为:MD,MDd,MT,MTd的使用过程中,不能使用多个导致的问题。无奈只能寻找生成动态库的方法。

配置过程

我是新建了一个dll库的工程,将开源框架中的源码复制到工程中进行编译。创建工程的步骤和包含头文件的过程就不说了。

  1. 首先找到config.h文件,在该文件中添加宏 #define JSON_DLL_BUILD 1,上个图:这里写图片描述 
    为什么要添加这个宏,原因是下面的条件编译代码中所说的,如果定义了 JSON_DLL_BUILD 就可以将JSON_API定义为__declspec(dllexport),因为这样后面的类,如Reader等才能够进行导出。

  2. 如果上面的都做了,当使用的是时候会发现没有lib文件,动态链接库中的.lib文件包含该DLL导出函数的和变量的符号名,而.dll文件包含该DLL实际的函数和数据。所以没有.lib文件,就算是有dll和.h文件还是使用不了的。那怎样生成.lib文件,这里以我的工程为例,在“Jsondll2”上右击,点击“添加”—>“新建项”–>“Visual C++”–>“代码”—>”模块定义文件(.def)”,写入动态链接库工程的名字,(一定要一样)。 
    上图: 
    这里写图片描述

  3. 在 jsondll2.def文件下的LIBRARY后面,添加Jsondll2。
  4. 在项目属性中“配置属性”-》“链接器”-》“输入”-》“模块定义文件”中添加jsondll2.def的文件,才可以。
  5. 以上工作都做完,才能编译成jsoncpp的动态链接库文件。

总结

  1. 生成动态链接库的步骤和方法自从学完MFC,就再也没有用过,具体详细过程和步骤可参考《VC++深入详解》(孙鑫的书) 19章动态链接库。
  2. 为了以后大家在工程中,再也不用编译jsoncpp的动态链接库文件,我决定将此工程和文件共享出来。源码,可以直接使用动态库文件,和测试代码。

这篇关于JSON解析-开源jsoncpp---动态链接库生成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/734004

相关文章

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Python中json文件和jsonl文件的区别小结

《Python中json文件和jsonl文件的区别小结》本文主要介绍了JSON和JSONL两种文件格式的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下... 众所周知,jsON 文件是使用php JSON(JavaScripythonpt Object No

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

SSID究竟是什么? WiFi网络名称及工作方式解析

《SSID究竟是什么?WiFi网络名称及工作方式解析》SID可以看作是无线网络的名称,类似于有线网络中的网络名称或者路由器的名称,在无线网络中,设备通过SSID来识别和连接到特定的无线网络... 当提到 Wi-Fi 网络时,就避不开「SSID」这个术语。简单来说,SSID 就是 Wi-Fi 网络的名称。比如

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加