在网上搜二维码库: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. openGauss共享存储对接Ceph-单机openGauss-Ceph zhangxb2023-02-18

    openGauss + DSS + Ceph 部署操作步骤 本文档介绍单机版 openGauss+DSS+Ceph 集群部署方式.后续提供主备下的步骤. 服务器: Hostname IP 系统 规格 ...

  2. k8s之configmap应用

    一.创建configmap 1.基于命令创建configmap root@k8s-master01:~# kubectl create configmap demoapp-cfg --from-lit ...

  3. 淘宝二面:MySQL里有2000万条数据,但是Redis中只存20万的数据,如何保证redis中的数据都是热点数据?

    引言 在当今互联网领域,尤其在大型电商平台如淘宝这样的复杂分布式系统中,数据的高效管理和快速访问至关重要.面对数以千万计的商品.交易记录以及其他各类业务数据,如何在MySQL等传统关系型数据库之外,借 ...

  4. Django框架——路由分发、名称空间、虚拟环境、视图层三板斧、JsonResponse对象、request获取文件、FBV与CBV、CBV源码剖析、模版层

    路由分发 # Django支持每个应用都可以有自己独立的路由层.静态文件.模版层.基于该特性多人开发项目就可以完全解耦合,之后利用路由分发还可以整合到一起 多个应用都有很多路由与视图函数的对应关系 这 ...

  5. NOIP模拟四

    NOIP模拟四 number 题目描述 现有 \(2^n\) 个点,点编号为 \(0\sim2^n-1\). 定义这些点的一张异或图为: 先选定一个集合 \(S\). 对于原图上编号为 \(x\) 和 ...

  6. (已解决)安装PyMySQL出现问题--'pip' 不是内部或外部命令,也不是可运行的程序 或批处理文件

    问题描述: 输入cmd,进入命令窗口,输入pip install pymysql时候出现下面的问题: 然后进入python环境中去输入还是报错: 问题原因:环境变量配置出错,cmd下无法调用pip程序 ...

  7. 阿里云EMAS旗下低代码平台Mobi开放定向内测

    ​简介:[低代码深度共创]EMAS旗下低代码平台Mobi开放定向内测名额,限时限量,参与调研先到先得! Mobi是面向全端(Web.Native App.H5.全平台小程序等)场景,模型驱动的低代码开 ...

  8. 深入浅出讲解MSE Nacos 2.0新特性

    简介: 随着云原生时代的到来,微服务已经成为应用架构的主流,Nacos也凭借简单易用.稳定可靠.性能卓越的核心竞争力成为国内微服务领域首选的注册中心和配置中心:Nacos2.0更是把性能做到极致,让业 ...

  9. 使用 Flink Hudi 构建流式数据湖

    ​简介: 本文介绍了 Flink Hudi 通过流计算对原有基于 mini-batch 的增量计算模型的不断优化演进. 本文介绍了 Flink Hudi 通过流计算对原有基于 mini-batch 的 ...

  10. [K8s] Docker 单节点部署 Rancher

    Rancher 是通过 Web 界面管理 k8s 集群的工具,本身支持使用 Docker 启动. 单节点部署只需要 docker run 即可,易用性高,高可用部署可以使用 nginx 反向代理机制. ...