C++
文章平均质量分 59
清明庐州月
这个作者很懒,什么都没留下…
展开
-
VS“无法解析的外部符号”的错误场景
1.引用库时发生错误,例如路径错误或者库名错误等。项目属性--链接器--常规--附加库目录 指定库的路径项目属性--链接器--输入--附加依赖项 指定库的名称2.库与库之间存在嵌套调用,引用库时只引用了上层库,没有引用下层库。例如项目A中调用了静态库a.lib的对外接口func1(),而a.lib中的接口func1()又引用了静态库b.lib中的func2(),但是项目A只引用了a.lib,导致func2()符号无法解析。示意图如下:这种情况只需要将a.lib和b.lib...原创 2021-03-01 20:04:33 · 3465 阅读 · 1 评论 -
内存泄露检测工具VLD相关配置
参考链接:VLD(Visual LeakDetector)内存泄露库的使用VS2019编译 内存泄漏检测工具VLD一、源码下载源码下载链接:https://github.com/KindDragon/vld解压后目录结构如下:二、编译1、打开解决方案:\sourceCode\vld\vld_vs14.sln,只需要编译libformat和vld,其他项目直接卸载即可:2、项目工程的默认平台工具集是VS2015,因此需要修改项目属性的SDK版本和平台工具集到与本机.原创 2020-11-25 17:44:38 · 796 阅读 · 0 评论 -
Thrift框架-Windows-C++ x64编译
Thrift是Facebook提供的一个跨语言的服务部署框架,可以实现客户端和服务器远程过程调用。相较于Google的grpc框架,Thrift对三方库依赖更少,编译更简单,并且运行效率也更高。Thrift只依赖boost、openssl和libevent三个库,下面详细介绍thrift的0.13.0的编译过程。原创 2020-09-01 19:05:08 · 3501 阅读 · 1 评论 -
多个源文件共享变量--extern关键字
通过使用extern关键字,可以在一个源文件中定义变量,在其他源文件中访问该变量,实现不同源文件共享变量。即:test1.cpp:int a = 1; //在test1.cpp中定义变量a,其初始值赋为1test2.cpp:extern int a; //在test2.cpp中声明外部变量a,告诉编译器在本文件中访问变量a时,应该从其他源文件中查找该变量的定义std::cout << a << std::endl;test3.cppextern i..原创 2020-08-13 23:08:51 · 648 阅读 · 0 评论 -
#include<>和#include“”的区别
1、查找的路径不同(1)#include<>:编译器直接从系统类库目录里查找头文件,比如在VS2013中:#include<stdio.h>那么编译器会直接在<Visual studio安装目录>\VC\include目录下查找到stdio.h这个文件,这就是编译器的类库目录。如果类库目录下查找失败,编译器会终止查找,直接报错:No such file or directore.(2)#include"":默认从项目当前目录查找头文件,.原创 2020-08-12 00:03:36 · 36665 阅读 · 0 评论 -
char*的深拷贝和浅拷贝
一、错误示范(指针传递,浅拷贝)我们先看一个例子,string2char()函数接受一个string类型的参数,然后调用string::c_str(),转换成char*类型,返回给main()函数,理论上最后pDest的值应该为"10.66.38.214:1522/orcl":#include <string>char* string2char(std::string src) { char* dest = (char*)src.c_str(); return de原创 2020-08-11 21:28:36 · 8896 阅读 · 0 评论 -
Visual Studio环境编译和使用grpc框架
参考链接:https://blog.csdn.net/weixin_28927079/article/details/97262243作者:melon-gagagRPC 是一个高性能、通用的开源RPC框架,其由 Google 主要面向移动应用开发并基于HTTP/2 协议标准而设计,基于 ProtoBuf(Protocol Buffers) 序列化协议开发,且支持java、C++、C#等众多开发语言。本文根据csdn博主“melon-gaga”的《gRPC源码编译和使用(windows+vs.原创 2020-08-07 18:24:20 · 3908 阅读 · 0 评论 -
switch...case 没有break问题
最近面试总是遇到switch...case没有break的提醒,在这里做一个总结。ps:平时编码中,一定要注意编码规范,每个case都写好对应的break,不要学习这种骚操作,稍不注意就可能出现bug!switch...case的三个规则:(1)既无成功匹配,又无default字句,那么swtich语句块什么也不做。(2)无成功匹配,但有default,那么swtich语句块做default语句块的事。(3)有成功匹配,没有break,那么成功匹配后,后面的“case关键字”全部注.原创 2020-06-30 22:29:53 · 20324 阅读 · 14 评论 -
sqlite3 "database is locked"
问题原因 sqlite3_exec对于执行create table、insert、update等操作,会对整个数据库加锁,导致加锁期间其他连接执行sqlite3_exec()失败,返回“database is locked”,错误码为5。 测试:创建两个线程,线程1向test表插入数值1,线程2向test表插入数值2,每个线程内循环执行10次,观察现象。#inclu...原创 2018-11-22 19:33:20 · 5287 阅读 · 0 评论 -
C/C++ 字符串基础函数
1、strtok 字符串分割原型:char *strtok(char s[], const char *delim); 解释:分割字符串,s为传入的字符串,delim为分割符,返回值为分割出的子串的地址。可以通过多次调用strtok,将字符串分解为一个个子串,只需第一次调用传入母串,后续调用只需要传入NULL即可。strtok会破坏传入字符串的完整性,所以如...原创 2018-09-26 19:26:09 · 169 阅读 · 0 评论 -
C++程序内存泄露
一、内存泄露1、delete销毁对象时,不会free掉成员变量申请的内存区域(1)销毁对象时,如果析构函数没有释放成员变量指向的内存区域,则会造成内存泄露(2)使用STL模板类,delete模板对象指针时,不会自动free模板类成员申请的内存区域示例代码:#include <iostream>#include "stdlib.h"#include <li...原创 2018-09-06 11:46:09 · 703 阅读 · 0 评论 -
C++获取系统时间
1、获取系统时间time_t time(time_t *t);返回从1970.1.1到指定时间 t 的秒数 time_t 为64位长整型,即__int64VC6.0的64位整数分别叫做__int64与unsigned __int64,其范围分别是[-2^63, 2^63)与[0,2^64),即-9223372036854775808~922337203685...原创 2018-08-13 23:05:42 · 4295 阅读 · 0 评论