c/c++
dofaster
这个作者很懒,什么都没留下…
展开
-
DLL的创建与使用
1.首先是创建DLL,导出函数与导出变量// 头文件#ifndef _THE_CLASS_H#define _THE_CLASS_H#ifdef _EXPORTDLL#define MYLIBAPI extern "C" __declspec(dllexport) #else#define MYLIBAPI extern "C" __declspec(dllimport)#e原创 2016-09-07 17:21:43 · 740 阅读 · 0 评论 -
C++ 打开选择文件夹对话框选择目录
需要添加头文件:#ifdef WIN32#include <shlobj.h>#endif调用文件对话框选择目录:// 选择目录void CustomInstalWndViewCtrl::OnSigBtnSelectInstallDir(){ BROWSEINFO bi; bi.hwndOwner = NULL; bi.pidlRoot = CSIDL_DESK...原创 2019-02-23 16:17:09 · 10232 阅读 · 4 评论 -
C++解压库bit7z编译以及使用
1.编译bit7z库bit7z是一个C++静态库,其封装了简单易用的接口,用于调用7-zip库;编译该库,首先需要下载以下源码:下载bit7z:https://github.com/rikyoz/bit7z下载lzma:https://jaist.dl.sourceforge.net/project/sevenzip/LZMA SDK/lzma1805.7z解压bit7z、lzma;在...原创 2019-02-23 16:13:32 · 7046 阅读 · 1 评论 -
LIB和DLL的区别,生成以及使用
参考该博客:https://www.cnblogs.com/TenosDoIt/p/3203137.html1.基本概念首先,介绍下动态链接库和静态链接库的概念,两者都是代码共享的方式。静态库:在链接步骤中,链接器将从库文件中取得代码,复制到可执行文件中,此种称为静态库。其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。即静态库中的指令都全部被直接包...原创 2019-02-16 16:49:22 · 1973 阅读 · 0 评论 -
C++线程池
复制这位同学:https://blog.csdn.net/liushengxi_root/article/details/839326541.概述:什么是线程池因为程序边运行边创建线程是比较耗时的,所以我们通过池化的思想:在程序开始运行前创建多个线 程,这样,程序在运行时,只需要从线程池中拿来用就可以了.大大提高了程序运行效率。2.如何实现线程池一般线程池都会有以下几个部分构成:线程池...原创 2019-01-21 21:01:24 · 3424 阅读 · 0 评论 -
VS调试技巧-基础
1.实时改变值在调试时,发现一个值不是期待的值,可以通过鼠标双击键入新的值。2.设置下一条语句有时通过单步跟踪分析一个函数为什么失败了,当发现一个函数调用另外一个函数返回错误的时候,想要查看为什么出错,这个时候不需要重启调试,直接拖动黄色的箭头到想要执行的语句,然后步入即可。3.编辑代码继续调试当发现某处编码逻辑错误时,又不想浪费时间停下来重新编译然后重新调试。这个时候可以修改错误的...原创 2018-12-23 11:31:49 · 333 阅读 · 0 评论 -
C++ 临界区、信号量简单介绍
生产者-消费者模式中会用到信号量进行同步。比如多个生产者线程产生的消息放置在一个链表中或者一个环形缓冲区中,消费者线程从链表或者环形缓冲区去读取消息。这个时候需要用到信号量和临界区。下面介绍一下信号量和临界区信号量:// 创建信号量,函数返回值:信号量的句柄HANDLE CreateSemaphore( // 安全控制,一般传入NULL LPSECURITY_ATTRIBU...原创 2018-09-02 15:04:13 · 1155 阅读 · 0 评论 -
环形缓冲区
我们再处理网络数据包时,可能会将接受到的网络数据包放入缓冲区去做进一步的处理,这里我自己根据自己的需要用C++编写了一个环形缓冲区,实际上是用数组来进行模拟。 首先头文件“RingBuffer.h”如下:#pragma once//此处定义了缓冲区的大小#define BUFFER_MAX_SIZE 1048576 // 1024 * 1024 1MB 1048576KBclass原创 2017-12-14 17:19:13 · 1664 阅读 · 0 评论 -
C++ 创建指定大小的空白文件
有时候我们需要创建指定大小的空白文件,我们可以使用Windows下的api CreateFileMapping创建// 创建的文件总大小 = dwHigh * 4G + dwLow// 当总大小小于4G时,dwHigh可以设置为0,dwLow数字最大为4G - 1DWORD CreateNullFile(DWORD dwHigh, DWORD dwLow, char* pszName){原创 2017-12-09 17:42:20 · 6221 阅读 · 1 评论 -
C++内存检测
记录下来,方便自己下次使用#ifndef MEMORY_DETECT_H_#define MEMORY_DETECT_H_#ifdef _DEBUG// 添加头文件#define _CRTDBG_MAP_ALLOC#include #include // 定义内存快照变量_CrtMemState sStart, sEnd, sComapre;#endif // endi原创 2017-09-18 09:36:01 · 582 阅读 · 0 评论 -
C++日志库(windows、linux)
自己写的一个小小的日志库,功能比较简单,单一。主要用到FILE_、__FUNCTION、FILE等宏定义。支持在windows、linux下使用,日志的格式最终保存为json格式,方便查看。**1.使用宏LoggerI初始化日志 2.接下来就可以利用LoggerN等输出日志信息了。**/*日志记录初始化LoggerI(strDir, bNormal,bWarn,bErr,level);参原创 2017-08-05 22:10:54 · 2386 阅读 · 0 评论 -
C++获取操作系统的名称
添加头文件#include <iostream>#include <string>#ifdef WIN32#include <Windows.h>#include <WinBase.h>#endif实现std::string GetOSName(){ std::string osname = "";#ifdef WIN32...原创 2019-03-06 19:19:10 · 1148 阅读 · 0 评论