libqr在VS下的编译

环境:vs2010

1. 源码下载

地址:https://github.com/rsky/qrcode

可以使用git clone下载,也可以直接打包为zip文件下载。

2. 编译

该项目需要使用cmake编译,因此我们先下载cmake。

2.1 cmake下载

cmake可以从官网下载,为了避免设置环境变量的麻烦,我们直接下载安装包,安装的时候选择设置环境变量,然后就可以直接使用cmake命令了。

下载地址(截止目前,最新为3.9.1版本):

  • 64位: https://cmake.org/files/v3.9/cmake-3.9.1-win64-x64.msi
  • 32位: https://cmake.org/files/v3.9/cmake-3.9.1-win32-x86.msi

下载完成后直接安装就好了。注意选择设置环境变量。 
然后在命令行中执行cmake命令,能正确执行则说明安装成功。否则需要手动在环境变量中添加cmake命令的路径。

libqr在VS下的编译_第1张图片

2.2 编译qrcode库

进入qrcode库所在目录,在libqr文件夹下有个CMakeLists.txt文件,在编译之前我们先修改一下这个文件。

说明一下,该项目依赖于zlib库,因此没有zlib库的朋友需要先下载zlib库,可以去下载源码编译,也可以使用我已经编译好的库直接使用。

已编译好的库下载地址:https://pan.baidu.com/s/1nuErVtv

下载zlib库之后,我们先编辑CMakeLists.txt文件。

修改22-24行,替换为以下内容:

##############################################################################
#find_package(ZLIB)
#set my own zlib path
set (ZLIB_INCLUDE_DIRS "")  #set in visual studio
set (ZLIB_LIBRARIES "")     #set in visual studio

#add_definitions(-Wall -Wextra)
# Set default compile flags for GCC
if(CMAKE_COMPILER_IS_GNUCXX)
 message(STATUS "GCC detected, adding compile flags")
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++98 -pedantic -Wall -Wextra")
endif(CMAKE_COMPILER_IS_GNUCXX)
##############################################################################

主要意思是将zlib的引用目录设置为空(我们将在VS中编译时指定),同时根据系统编译环境指定编译参数。

libqr在VS下的编译_第2张图片

然后打开cmd,进入到qrcode的libqr目录下,执行 cmake . 命令:

以上引用自:https://blog.csdn.net/qq_35583007/article/details/78874524

编译时发生如下错误:

libqr在VS下的编译_第3张图片

修改:删除cvtres.exe,再编译

libqr在VS下的编译_第4张图片

 参考:https://www.cnblogs.com/newpanderking/articles/3372969.html

成功编译:

libqr在VS下的编译_第5张图片

生成工程:

libqr在VS下的编译_第6张图片

设置预处理 QR_DLL_BUILD (如果是编译静态库项目libqr_static则设置为 QR_STATIC_BUILD)

debug和Realease都设置

libqr在VS下的编译_第7张图片

设置我们之前下载的zlib库头文件和lib库目录

将zlib.zip解压后如下图所示

libqr在VS下的编译_第8张图片
 

libqr在VS下的编译_第9张图片

Debug:

libqr在VS下的编译_第10张图片

Release:

libqr在VS下的编译_第11张图片

若编译报错如下,同上面一样,删除cvtres.exe

libqr在VS下的编译_第12张图片

libqr在VS下的编译_第13张图片

编译若报错:

libqr在VS下的编译_第14张图片

(注意,编译时可能会提示 error LNK2019: 无法解析的外部符号 _snprintf 错误,我们替换所有snprintf为_snprintf,vsnprintf为_vsnprintf就可以了。) 
最终会在Debug或者Release目录下(看你编译的是debug还是release版本)生成qr.lib和qr.dll两个文件,然后就可以在其他项目中使用了。

 

你可能感兴趣的:(libqr)