环境:
Windows 10 64bits;Visual Studio 2017;qrencode-4.0.2;CMake 3.12.1。
下载:
解压:
qrencode到【解压目录】,如D:/qrencode-4.0.2
编译:
1 纯净编译(不带任何其他库):
修改【解压目录】/CMakeLists.txt文件:不启用WITH_TOOLS变量去构建其他工具。
原来:option(WITH_TOOLS "Build utility tools" YES )
修改:option(WITH_TOOLS "Build utility tools" NO )
其他不变,保存文件。
2 打开cmake-gui.exe
Where is the source code: 填入【解压目录】
Where to build the binaries: 填入【CMake 输出目录(自定义)】
点击按钮【Configure】,选择编译器类型【Visual Studio 15 2017 win64】,configure出错,有很多红色。如图1.
【可选】如果你需要修改【编译后安装的路径CMAKE_INSTALL_PREFIX】,则点击上图中的对应行即可进行编辑修改。
再次点击按钮【Configure】,提示“Configuring done”。
点击按钮【Generate】,提示“Generating done”。
至此,由CMake生成qrencode的VS2017 x64的解决方案【QRencode.sln】完成。CMake软件使用完毕。
使用VS2017打开【QRencode.sln】
方法一:自行到【CMake 输出目录(自定义)】目录下,双击QRencode.sln。
方法二:继续使用刚才的CMake软件,点击按钮【Open Project】即可。
选中【ALL_BUILD】编译,编译成功后,选中【INSTALL】进行安装,安装路径为上文【可选】中提到的CMAKE_INSTALL_PREFIX所指定的路径。
至此,编译完成!
测试:
需要使用OpenCV库将编码数据转换为图片,以便观看及验证。
int main() {
//
std::string src = "iam mylaf 1359.com";
// 使用qrencode进行字符串编码
QRcode * code = QRcode_encodeString(src.c_str(), 0, QR_ECLEVEL_H,QR_MODE_8, 1);
if (code == NULL) {
std::cout << "code = NULL" << std::endl;
return -1;
}
// 使用OpenCV库将编码数据表述为图片
cv::Mat img = cv::Mat(code->width, code->width, CV_8U);
for (int i = 0; i < code->width; ++i) {
for (int j = 0; j < code->width; ++j)
{
img.at<uchar>(i, j) = (code->data[i*code->width + j] & 0x01) == 0x01 ? 0 : 255;
}
}
// 将图片数据写入文件
cv::imwrite("qrcode.png", img);
//cv::imshow("kkk", img);
//cv::waitKey(0);
//
return 0;
}
测试结果:
qrcode.png 如下:
将qrcode.png上传到在线解码,得到: