![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++
文章平均质量分 66
C/C++语言技术记录
Li_Zhi_Yao
花有重开日,人无年少时!
展开
-
C++ 开源图像处理库FreeImage用法小记
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言最近跨平台开发(Win32、 Linux arm64、Linux amd64),要求处理图像进行缩放和裁剪;原本想CxImage,结果在官网找的开源代码好久没更新了,而且只有VS的解决方案,Windows可以了,Linux自己写Makefile生成库了,但是一加载图片就崩,无语…改用OpenCV,直接编源代码,结果厂商提供的Linux系统太垃圾,都是阉割版的,编译依赖的内核插件啥的一个都下载不了,下载离线包又太麻烦,只能原创 2021-03-15 10:53:28 · 2559 阅读 · 4 评论 -
Linux 多线程开发(二)
系列文章目录Linux 多线程开发(一)文章目录系列文章目录前言一、线程清理二、向线程发送信号Linux 信号基础知识总结前言接上一篇,本文主要讲解线程的清理、终止、取消和释放。提示:以下是本篇文章正文内容,下面案例可供参考一、线程清理1)子线程退出时可能需要执行善后的工作,如释放资源和锁、回滚事务等;2)善后的代码不适合卸载线程函数中,一般放在清理函数中,主要用到注册清理函数 pthread_cleanup_push 和弹出线程清理函数 pthread_cleanup_pop,函数原创 2020-12-13 22:20:51 · 90 阅读 · 0 评论 -
Linux 多线程开发(一)
文章目录前言一、多线程的基本知识二、线程函数说明1.创建线程2.终止线程3.线程资源回收4.线程取消三、示例总结前言本文主要介绍 Linux 多线程的相关知识,以及如何创建和使用。一、多线程的基本知识1)线程的基本概念,多进程的数据空间是独立的,同一进程中的多个线程的数据空间是共享的,线程消耗的资源比进程要少;2)查看进程 top -H 和 ps -xH。二、线程函数说明1.创建线程函数声明:// thread:指向线程标识符的地址// attr:设置线程属性,一般为空,表示使用默原创 2020-12-13 17:51:19 · 414 阅读 · 0 评论 -
C++ jsoncpp使用心得
文章目录前言一、jsoncpp是什么?二、使用方式1.引入库2.引入源码三、使用方法总结前言最近开发有用到 jsoncpp,总结一下使用心得,方便下次使用时查阅。一、jsoncpp是什么?Jsoncpp 是个跨平台的开源库,用来解析 json 数据格式字符串,下载链接:jsoncpp二、使用方式1.引入库Window平台: 下载了之后,解压,然后打开 jsoncpp-src-0.5.0\jsoncpp-src-0.5.0\makefiles原创 2020-12-10 10:41:37 · 517 阅读 · 0 评论 -
Linux 如何编写makefile详解
文章目录前言一、makefile三要素二、写法1.引入库2.读入数据总结前言Linux c/c++ 开发少不了编写 makefile 文件,一次编写,终身受益,哈哈!另外,gcc编译基础知识可参考我这篇博客:Linux C gcc编译基础知识详解一、makefile三要素目标:依赖:规则命令:二、写法目标:依赖tab键 规则命名先贴上我整个工程环境,如下所示:[lzy@localhost Calc]$ lsinclude lib src[lzy@localhost Cal原创 2020-11-21 20:06:04 · 6148 阅读 · 2 评论 -
C++ 代码不严谨的惨痛教训
项目场景:最近开发一个项目,安装环境是 D://AA//BB,AA 是公共库文件夹,BB 是子模块文件夹,AA 和 BB 文件夹的绝对路径都保存在环境变量中,BB 子模块文件夹中有一个服务程序,程序启动后也需要启动该服务程序;因为是市场上反馈了有问题,需要售后同事配合测试,结果悲剧了问题描述: 问题很块就处理,本地测试验证通过后,就邮件发给现场同事进行验证,同时邮件备注了每个库分别拷贝存放的路径,但是就是不行,我就问售后,文件是否拷贝对了,他们说拷贝好了原创 2020-11-17 14:15:50 · 238 阅读 · 0 评论 -
Linux C 制作静态库和动态库详解
文章目录前言一、制作步骤二、使用步骤1.引入库2.读入数据总结前言该篇主要是描述如何使用 gcc 编译静态库和动态库,以及静态库和动态库的使用,gcc编译的基础知识请参考我这篇博客Linux gcc编译一、制作步骤使用 gcc 编译代码,分别生成静态库和动态库,二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns原创 2020-11-14 15:29:35 · 359 阅读 · 0 评论 -
Linux qt pro文件判断系统架构以及定义宏
文章目录前言一、判断系统架构二、定义宏总结前言由于Linux平台项目需要同时在 x86 和 arm64 上编译,并且需要指定不同的包含路径,并且 pro 文件需要定义宏,特此记录一下一、判断系统架构pro 添加如下代码:#函数原型为contains(variablename, value),如果 variablename 包含 value 则返回成功#QMAKE_HOST.arch:qmake变量,计算机架构#x86_64:终端输入 lscpu 可以参看当前计算机架构,x86 是 x8原创 2020-11-09 18:17:28 · 3746 阅读 · 0 评论 -
Linux C gcc编译基础知识详解
文章目录前言一、gcc编译步骤二、gcc编译参数2.读入数据总结前言工作需要,转为Linux系统开发,后续会发布系列文章,Linux下gcc编译必不可少,本文就介绍了gcc的基础内容。一、gcc编译步骤1、预处理器(cpp):gcc -E (展开头文件和宏定义,输出文件通常以 *.i 结尾)2、编译器(gcc):gcc -S (生成汇编文件,输出文件以 *.s 结尾)3、汇编器(as):gcc -c (生成二进制文件,输出文件以 *.o 结尾)4、链接器(ld):gcc (生成可执行文原创 2020-11-09 15:49:06 · 437 阅读 · 1 评论 -
Linux C recv函数阻塞问题
问题描述:有个Linux项目用到TCP/IP通讯,但是recv()函数老是阻塞,没有返回;setsockopt()也设置了超时时间,同时在执行recv()之前也增加了select()查看套接字的状态,如果状态异常异常是不会执行recv()函数的 原因分析:1、recv()是Linux的系统函数,肯定不会卡死,除非Linux内核故障,基本可以排除;2、客户端向服务器端发送数据,服务器端没有接收,导致缓冲区满,客户端无法接收数据,因此客户端阻塞?等等,我不是加了超时吗?怎么还会阻塞?3、读写超时设原创 2020-11-06 18:01:58 · 4697 阅读 · 2 评论 -
C++设置打印机暂停打印SetPrinter
前言工作需要,目前开发并一直负责维护着打印机SDK,该篇主要讲解如何设置打印机暂停打印,这里的暂停打印是使打印机状态处于暂停状态,而不是暂停某个打印任务。一、SetPrinter函数简介SetPrinter 函数允许应用程序更改各种打印机属性,函数原型如下:BOOL WINAPI SetPrinter( _In_ HANDLE hPrinter, _In_ DWORD Level, _In_ LPBYTE pPrinter, _In原创 2020-11-04 16:35:17 · 1843 阅读 · 3 评论 -
C++字符串处理strcpy_s注意事项
问题描述:之前公司开发用的VS2008,后面统一升级VS2015,重新编译都是安全检查错误,类似于error C4996: ‘strcpy’: This function or variable may be unsafe. Consider using strcpy_s instead这种,为了安全考虑,那就替换吧;替换之后,却发现有个函数一直崩溃,VS2008编译的却没问题,代码逻辑没改,并且用的是同一份测试数据,示例代码如下:#include <windows.h>#include原创 2020-10-28 16:21:58 · 850 阅读 · 0 评论 -
C++ const指针和typedef
问题描述:最近开发过程中遇到一个小问题,在此记录一下,场景是使用关键字typedef定义了一个指针类型, 使用const修饰变量属性的时候,结果和预期的不一样;示例代码如下:#include <stdio.h>typedef int* pInt;int main(){ int iNum = 1; const int* pNum1 = &iNum; int* const pNum2 = &iNum; // pNum3是什么?和pNum1一样?还是和pNum2一样?原创 2020-10-24 13:29:06 · 187 阅读 · 0 评论 -
C++全局常量声明和定义extern
问题描述:在一个源文件A.cpp中声明了一个全局常量,在源文件B.cpp中定义了该全局常量,结果在A.cpp中使用全局常量报错了,错误如下:error LNK2001: 无法解析的外部符号 “int const g_iCount” (?g_iCount@@3HB) fatalerror LNK1120: 1 个无法解析的外部命令A.cpp源码如下:#include <iostream>using namespace std;extern const int g_iCount;原创 2020-10-21 14:32:17 · 1070 阅读 · 0 评论 -
C++ Run-Time Check Failure #0 错误记录
C++ Run-Time Check Failure #0 错误记录最近工作中,需要调用第三方SDK, 我这边是动态调用DLL文件,加载DLL库和导出函数地址都成功了,但是在调用的时候却报错弹框了,调试的时候弹框如下:错误描述是函数调用约定不一致破坏了ESP的值,处理如下:1、代码中,函数声明 typedef void (__stdcall* pFun)(),使用调用规范为__stdcall,于是查看项目属性的调用约定2、点击【项目】->【属性】->【配置属性】->【C/C++】原创 2020-10-15 14:20:07 · 1062 阅读 · 0 评论 -
C++ 打印机状态查询之SNMP协议
前言由于工作需要,封装打印机SDK,该篇主要讲解如何获取打印机的状态,打印机支持简单网络管理协议(SNMP),并且windows api支持snmp通讯协议;所以,就使用snmp协议查询打印机状态一、SNMP协议简介简单网络管理协议(SNMP),是TCP/IP协议簇的一个应用层协议,工作在UDP 161端口,用于监控目标设备的操作系统、硬件设备、服务应用、软硬件配置、网络协议状态、设备性能及资源利用率、设备报错事件信息、应用程序状态等软硬件信息。已经有3个版本,SNMPv1、SNMPv2、SNMPv原创 2020-10-19 17:06:40 · 3006 阅读 · 0 评论 -
C++获取打印文件页数
文章目录前言一、打印队列二、获取打印队列作业设计逻辑总结前言工作需要,目前在开发打印机SDK,该篇主要是记录获取打印文件的页数的功能,其他功能后续逐渐完善一、打印队列Windows打印使时,会创建一个打印队列,电脑状态栏会出现一个打印队列图标,双击打开,如下图所示:打印队列里面有文档名(有的系统可能带路径)、状态、页数等信息,并且会有多个任务;使用Windows api可以获取打印队列的信息二、获取打印队列作业设计逻辑通过Windows api获取到打印队列作业结构体JOB_INFO_原创 2020-10-16 15:15:02 · 1609 阅读 · 1 评论 -
C++打印机首选项设置
C++打印机彩打设置前言最近在开发打印机SDK,之前一直做黑白打印机,后面来了一个彩色打印机,要求彩色文档不但可以打印出彩色纸张,也能打印出黑白纸张;打印机默认是黑白文档打印黑白纸张,彩色文档打印彩色纸张,需要调用windows api来控制。一、打印机首选项首先查看打印机是否支持颜色设置(必须先安装打印机驱动,并且正常连接打印机),去电脑查看打印机首选项,【控制面板】->【设备和打印机】->【选中彩色打印机】->【右击选择打印机首选项】->【点击颜色窗口】,如下图所示:原创 2020-10-15 18:28:01 · 4966 阅读 · 5 评论