• c++ 记一次把qrencode源码生成动态库的尝试


    在网上搜二维码库: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
     
  • 相关阅读:
    android异步更新UI的方法
    android中不同acitity之间进行数据传递(或者数据保存)
    android post数据到服务器端工具类(包括postjson字符串、键值对)
    android GestureDetector
    android实现圆角矩形
    android调用图库获取图片显示在img中
    (转)Http上传 vs Ftp上传
    (转)[VSTS] 让ADO.NET Entity Framework支持Oracle数据库
    (转)网站设计常用技巧收集
    (转)有了jQuery.Jcrop,选取美女的哪个部位你说了算
  • 原文地址:https://www.cnblogs.com/HelloQLQ/p/16364825.html
Copyright © 2020-2023  润新知