在网上搜二维码库:qrencode,源码下载:https://github.com/fukuchi/libqrencode
我的是windows环境,IDE是vs2022。
建立一个动态库的空工程。
把源码下载下来,其中test文件夹 use文件夹 和cmake文件夹我没有使用,直接把根目录的所有.h和.c复制,然后在vs的项目里粘贴。
因为使用了png.h 头文件,所以nuget搜索:libpng,注意看标记一栏的编译器支持版本,v120,v140,vs2022使用的是更高版本的,所以需要visualstudio installer 修改 添加 v140或v120版本,否则贬义时会报link错误,比如:
”错误 LNK2019 无法解析的外部符号 png_create_write_struct,函数 writePNG 中引用了该符号“
因为代码里用了很多windows环境下过时的方法,会报错 c4996。
错误 C4996 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS
需要在项目里设置,右键项目,选择属性,c/c++一栏 选择高级,找到右侧的特定警告,输入4996添加。
除了这个,还需要在预编译头里,不适用预编译头。
做了这些工作,这个项目大概率是能1成功,0error,0warnning的。
 
然后就是写dll的接口了,再写接口前,先了解以下这个库,这个库的主要对象是QRcode,
主要方法是:
QRcode *QRcode_encodeString(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive)
输出图片文件:static int writePNG(const QRcode *qrcode, const char *outfile, enum imageType type)
我就写了两个接口,一个是供c++环境使用的生成图片的,一个是供c#使用,可以自定义二维码图片尺寸的。
因为这个是库是作者用c语言写的,所以,导出的接口可以这样写:
__declspec(dllexport) int Method(int arg,const char*fileName)
重点在这里:__declspec(dllexport)。
到这里,就能使用这个库了。不过我生成的二维码的大小是固定的。自己不太了解这个库的具体内容,只是简单尝试了以下,作为练习,并没有运用到工作中去。可能还有很多坑,自己没遇见。
c++调用方如何使用这个库,详情:
https://www.cnblogs.com/HelloQLQ/p/16364842.html
c#调用方如何调用这个库,详情:
 https://www.cnblogs.com/HelloQLQ/p/16364888.html
 

c++ 记一次把qrencode源码生成动态库的尝试的更多相关文章

  1. springMVC源码分析--动态样式ThemeResolver(二)

    在上一篇博客springMVC源码分析--动态样式ThemeResolver(一)中我们介绍了多样式ThemeResolver的使用方法,接下来我们对源码进行简单的分析一下. ThemeResolve ...

  2. Spring mybatis源码篇章-动态SQL节点源码深入

    通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-动态SQL基础语法以及原理 前话 前文描述到通过mybatis默认的解析驱动类org.apache.ibat ...

  3. 【Visual Leak Detector】源码编译 VLD 库

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记.本篇介绍 VLD 源码的编译.同系列文章目录可见 <内存泄漏检测工具>目录 目录 说明 1. VLD 库的依赖文件 2. 源码 ...

  4. React躬行记(16)——React源码分析

    React可大致分为三部分:Core.Reconciler和Renderer,在阅读源码之前,首先需要搭建测试环境,为了方便起见,本文直接采用了网友搭建好的环境,React版本是16.8.6,与最新版 ...

  5. 记2020年初对SimpleGUI源码的阅读成果

    2020春节,阅读了下SimpleGUI源码,我一直喜欢边阅读,边手绘图片,所以这里只贴几张图片. 一,什么是SimpleGUI ? https://gitee.com/Polarix/simpleg ...

  6. 记一次修改框架源码的经历,修改redux使得redux 可以一次处理多个action,并且只发出一次订阅消息

    redux是一个数据状态管理的js框架,redux把行为抽象成一个对象,把状态抽象成一个很大的数据结构,每次用户或者其他什么方式需要改变页面都可以理解成对数据状态的改变,根据出发这次改变的不同从而有各 ...

  7. Node.js躬行记(19)——KOA源码分析(上)

    本次分析的KOA版本是2.13.1,它非常轻量,诸如路由.模板等功能默认都不提供,需要自己引入相关的中间件. 源码的目录结构比较简单,主要分为3部分,__tests__,lib和docs,从名称中就可 ...

  8. ant编译solr源码生成eclipse项目,解决一直resolve,一直[ivy:retrieve]的问题

    这两天在学习solr,结果刚到编译solr源码就卡住了,足足卡了两天,网上找各种解决办法都是简单带过,说是缺少jar包,下载下来放到对应位置就好了....对应位置???咋不说这个问题用相应方法解决即可 ...

  9. 源码生成deb包

    方法一 源码包要求是使用 automake 进行编译管理的. 安装路径不能指定为 /usr/local 下的目录,否则生成 deb 包期间报错. 制作的工具是 dh-make ,如果没有安装,要先安装 ...

  10. VS2008下WinRar源码生成dll和 lib总结

    WinRar官方提供了源码(http://www.rarlab.com/rar_add.htm):如果自己想要修改里面的内容就要重新生成DLL和LIB,我在网上找了很多资料都没有说得很清楚.花一两天的 ...

随机推荐

  1. pageSpy - 远程调试利器

    视频版: https://www.bilibili.com/video/BV1Zi4y167TZ 前言 在工作中, 经常需要面对的问题就是处理客户提出的bug. 但是这个事儿最耗费精力甚至决定能不能修 ...

  2. python异步字符串查找,asyncio和marisa_trie

    自然语言处理当中经常需要字符串的查找操作,比如通过查找返回字串在文本当中的位置,比如通过匹配实现的ner import pandas as pd import asyncio # data = pd. ...

  3. 怀里橘猫柴犬,掌上代码江湖——对话阿里云 MVP郭旭东

    简介: 跟郭旭东聊过之后,我对程序员的敬佩又多一分.这个92年的开发者,难能可贵地兼备朝气蓬勃的技术能量与长远深刻的行业洞见.独自承担DevOps平台从0到1的所有工作,我打趣说超级开发者不过如此,他 ...

  4. 高效使用Java构建工具|Maven篇|云效工程师指北

    ​简介:高效使用Java构建工具|Maven篇.众所周知,当前最主流的Java构建工具为Maven/Gradle/Bazel,针对每一个工具,我将分别从日常工作中常见的场景问题切入,例如依赖管理.构建 ...

  5. RocketMQ 端云一体化设计与实践

    简介:本文首先介绍了端云消息场景一体化的背景,然后重点分析了终端消息场景特点,以及终端消息场景支撑模型,最后对架构和存储内核进行了阐述.我们期望基于 RocketMQ 统一内核一体化支持终端和服务端不 ...

  6. 阿里云数据库开源重磅发布:PolarDB三节点高可用的功能特性和关键技术

    ​简介:在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云数据库技术专家孟勃荣 带来了主题为<PolarDB 三节点高可用>的精彩演讲.三节点高可用功能主要为 PolarD ...

  7. 阿里云GanosBase重磅升级,发布首个云孪生时空数据库

    ​简介: GanosBase是李飞飞带领的达摩院数据库与存储实验室联合阿里云共同研发的新一代位置智能引擎:本次重磅升级为V4.0版本,推出首个云孪生时空数据库. ​ 作者 | 谢炯 来源 | 阿里技术 ...

  8. 如何基于Dataphin实现敏感数据保护

    ​简介: 在企业的发展过程中,如果不重视敏感数据的保护,和数据安全体系的建设,那么一旦发生了敏感数据泄漏事件,轻则企业口碑受损,业务受影响:重则会直接触法律,受到主管部门的处罚和制裁.本文将以一个最常 ...

  9. WPF 对接 Vortice 调用 WIC 加载图片

    本文将告诉大家如何通过 Vortice 库从底层的方式使用 WIC 层加载本地图片文件,解码为 IWICBitmap 图片,然后将 IWICBitmap 图片交给 WPF 进行渲染 本文的前置博客:W ...

  10. SpringMVC拦截器配置后端登录校验

    引 创建拦截器的方法有多种,可以继承HandlerInterceptorAdapter类,也可实现HandlerInterceptor接口.接口中有三个方法: preHandle:在业务处理器处理请求 ...