生成lib ,参照:
https://blog.csdn.net/ljttianqin/article/details/73699777
但需修改。
一 。先建一win桌面-静态库。
二 。进去后 解决方案 项目名称上右键属性-和参照链接里的一样:属性 --> 配置属性 --> C/C++:
1 预编译头-改成不使用预编译头
2 预处理器- 加 HAVE_CONFIG_H;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS
后面2个是处理警告C4996用的。
三。 拷贝全部.c 、.h文件,去掉 qrenc.c
四。自己添加 config.h 文件,编辑添加: 和链接完全一样,把里面的版本可以改一下。
最后添加一行:
#define STATIC_IN_RELEASE static
这样应该就可以了
=================================================
其实对于有些运用,需要VC++ 的各版本都进行编译,而且要32位和64位,那相应的生成的lib就要有一堆版本文件,因为生成的lib 只能对应vc的当前版本,比如vc2017生成的就只能2017下才能引用这个lib.
只能另外想办法,不生成lib,直接把他作为C++文件来用。
方法:
拷贝全部.c 、.h文件,去掉 qrenc.c,到你的项目里面,
把.c文件改成.cpp文件。把cpp包含到工程。(H文件随意)。
在工程中 #include "qrencode.h" 。
A方法. 和上面编译lib一样,预处理器-加上面的那几个,出来什么错误就加什么。把上面刚改成cpp的那几个文件选中,右键,C/C++,预编译头-改成不使用预编译头。如果有什么警告,在项目的 属性 --> 配置属性C/C++常规里面,改警告不视为错误。
B方法. 把刚改成cpp的那每个文件的头上加 #include "StdAfx.h".这样才能预编译头。同时有什么问题,只要在 StdAfx.h里面加,比如可能会遇到:
#define _ALLOW_RTCc_IN_STL
#pragma warning(disable: 4806) //里面好像有个类型强行转换什么的警告。
这样就可以用常规的预编译头了。修改后一劳永逸。