在网上搜二维码库: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. 多次复制Excel符合要求的数据行:Python批量实现

      本文介绍基于Python语言,读取Excel表格文件数据,并基于其中某一列数据的值,将这一数据处于指定范围的那一行加以复制,并将所得结果保存为新的Excel表格文件的方法.   首先,我们来明确一 ...

  2. 牛蛙!GoFrame2.7正式版的监控组件真是及时雨

    声明:本文首发在同名公众号:王中阳Go,未经授权禁止转载. GoFrame框架今天发布了v2.7.0正式版本啦! 最大看点 本次版本最大的看点是提供了metric监控组件,主库提供了接口化的metri ...

  3. 如何巧妙应对iOS键盘难题?

    前言 写过移动端的同学或多或少都遇到过软键盘带来的各种各样的问题,最典型的就是输入框被软键盘遮挡.fixed元素失效等问题,并且这些问题在iOS上的表现让人难以接受. webview的差异 在移动端上 ...

  4. CentOS 6.5快速部署HTTP WEB服务器和FTP服务器

    CentOS 6.5快速部署HTTP WEB服务器和FTP服务器 时间:2014-03-29    来源:服务器之家    投稿:root    点击:210次 [题记]本文使用CentOS 6.5m ...

  5. sql 语句系列(计算一个季度的开始日期和结束日期)[八百章之第二十三章]

    前言 很多时候,我们进行数据库查询的时候,查询一个季度的财务报表的时候. 比如说查询2020年第一季度的单子,可能传入后台的就是20201,表示的就是20201第一季度,这时候我们要转换为日期. se ...

  6. sql 语句系列(更新系列)[八百章之第六章]

    使用另一个表更新记录 有时候我们的数据不会立即去更新,而是存在另外一张表中等待更新,这是在日常开发中常见的操作. update e set e.SAL=ns.SAL+e.SAL, e.COMM=ns. ...

  7. Python阿里云消息推送调用API

    很多公司测试APP推送时候,应该也是很头疼:推送环境:测试.正式,稍不注意就把测试的push到正式上,导致所有用户都收到 例子很多: 其实阿里.极光都有推送Api,直接调用API就ok,特别是有的公司 ...

  8. 数据分布算法:hash+ 一致性 hash + redis cluster 的 hash slot

    讲解分布式数据存储的核心算法,数据分布的算法 hash 算法 -> 一致性 hash 算法(memcached) -> redis cluster 的 hash slot 算法 用不同的算 ...

  9. React中受控组件和非受控组件

    一.受控组件 受控组件,简单来讲,就是受我们控制的组件,组件的状态全程响应外部数据 举个简单的例子: class TestComponent extends React.Component { con ...

  10. Vue3.0 框架搭建的后台管理模板

    一个Vue3.0框架搭建的后台管理模板 开源vue3.0版本基于vue3.x+ant-design-vue构建的免费开源admin项目,star高达8.4K+ 支持电脑端.手机.平板等平台 底层使用e ...