当前位置 : 主页 > 编程语言 > 其它开发 >

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

来源:互联网 收集:自由互联 发布时间:2022-06-11
在网上搜二维码库:qrencode,源码下载: https://github.com/fukuchi/libqrencode 我的是windows环境,IDE是vs2022。建立一个动态库的空工程。把源码下载下来,其中test文件夹 use文件夹 和cmake文件夹我
在网上搜二维码库: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  
网友评论