- 博客(31)
- 收藏
- 关注
原创 模板函数的定义必须在头文件
如果函数模板的声明在头文件,定义在源文件,对于调用的地方而言,链接的时候,只能找到声明,不知道实现,就无法根据调用时的模板类型生成一个函数实现版本。因此就会报链接错误。模板函数的定义必须在头文件中,因为模板是在编译期间实例化,模板的本意是,在模板函数调用的地方确定了模板类型后,按照模板类型实现一版函数实现。
2024-09-27 10:43:57 104
原创 windows编译X64curl库
2.利用vs的nmake(Microsoft Program Maintenance Utility)4.编译产物位于curl目录下builds目录。vs-工具-命令行-开发者命令提示。用Windows的nmake。
2024-01-17 21:47:28 467
原创 vs的生成事件error MSB3073
事件属于必然执行语句,如果执行出错,就会报错终止后续编译,这里由于我的目录中并没有…\dll\libx目录下的全部文件拷贝到\bin\libx目录下;\dll目录中的全部文件拷贝到\bin\libx目录下;生成事件有:生成前事件、链接前事件、生成后事件。生成事件设置位于:项目-》属性-》生成事件;以生成前事件为例:可以用于一些库文件的配置。如果已经手动配置依赖库路径,删除该事件即可。2.在bin目录下新建一个libx目录;
2023-12-09 19:43:34 724
原创 Linux编译报错在此处初始化后被初始化
因为列表初始化时,实际的执行顺序是按照成员变量的声明顺序初始化,跟初始化列表的代码排列顺序无关,当初始化列表的顺序跟成员变量的声明顺序不一致时,如果存在用成员变量初始化其他成员变量,就很容易出现问题。在Windows编译不会告警,在Linux编译会告警。初始化列表的排列顺序按成员变量的声明顺序排。
2023-11-16 18:16:43 136
原创 容器size()无符号数导致的for循环崩溃
打一下日志,发现(intVec.size())-1的unsigned int类型其实是429496…,在这篇有推导这个原因,(1)如问题描述中的,对vec.size()做一次强转;(2)判断一下vec.size()-1 大于0。容器size()无符号数导致的for循环崩溃。(2)intVec[index]越界崩溃。(2)intVec[index]越界崩溃。Windows编译成功。,所以for循环会进。
2023-11-14 10:55:24 107
原创 CJson array 下标访问方法
CJson array 下标访问方法用下标访问json array 时,第一个元素,也就是下标为0的元素,直接用jsonArraycase[0]的方式是编译不过的,其实源码里做了说明的:Value &operator[]( UInt index );/// Access an array element (zero based index )/// (You may need to say ‘value[0u]’ to get your compiler to distinguish///
2021-10-11 17:45:51 376
原创 2021-06-04代码vs调试没问题,但是直接运行exe闪退
代码在vs调试没问题,但是直接运行exe闪退生成dmp文件:这种情况其实是代码包含有exe找不到的路径,导致应用程序找不到我的代码实际是在主程序的参数处出了问题:这里load函数是要调用主程序参数的,主程序参数是在vs配置的。这里的参数配置是在vs中启动程序时首先加载的,这里的配置并不会编译进exe,所以exe自然无法找到这个配置文件。所以,解决办法应该是把绝对路径加入代码,编译进exe.虽然问题是这样解决了,但是很明显感觉这个方法笨笨的。真正的解决方法应该是保持加载main函数的参数
2021-06-04 00:46:29 2966 1
原创 vsC++编译生成dll和lib
项目-》属性-》常规-》配置类型里面可以选择exe,dll,lib,文件,实用工具但是好像还是不能选择同时生成lib跟dll使用一下方法可实现:项目-》添加-》新建项-》代码-》模块定义文件添加后会生产一个source.def,然后就再编译就有lib了。...
2021-05-25 11:26:03 518
原创 编译jsoncpp.lib
编译所需版本的jsoncpp.libgithub下载的jsoncpp-1.9.4版本,1.之后的版本没有vs可用的工程文件,需要借助cmake工具生成vs工程:一 安装cmake下载地址:https://cmake.org/download/选择安装文件:逐步安装即可,其中值得注意的是安装过程中注意勾选将cmake作为环境变量,免得后面再配。二 创建vs工程1.创建build文件夹用于存放vs工程文件。2.利用CMake gui创建vs工程(1)configure(2)Generate
2021-05-02 11:27:20 502
原创 sourcetree配置ssh
sourcetree 配置ssh密钥,网上都有教程,看起来是很简单的问题,实际操作的时候却因为一个小问题搞得脑壳痛。不过好在本人始终秉持百折不挠的程序员精神,最终解决了问题,并清晰了配置ssh的整个流程。具体ssh更底层的原理等有时间了再好好梳理一下1.打开sourcetree生成ssh密钥2.打开git网页配置ssh公钥3.sourcetree配置私钥4....
2021-04-22 01:00:06 1422
原创 算法学习笔记
拓扑排序:在AOV网中,若不存在回路,则所有活动可排列成一个线性序列,使得每个活动的所有前驱活动都排在该活动的前面,我们把此序列叫做拓扑序列(Topological order),由AOV网构造拓扑序列的过程叫做拓扑排序(Topological sort)。对有向无环图(DAG)进行拓扑排序#include<iostream>#include<vector>#include<queue>using namespace std;void getInDegree
2021-03-14 10:34:49 186
原创 fillPoly()入参,_InputArray类型,_InputArray::getMat()处崩溃
opencv入门学习,填充函数fillPoly遇到一个问题,跟着老师的代码,他跑起来是没有问题的,但是我这里始终不行,因为我装的是v4.0.0.老师装的是v4.4.0,可能存在一定差异Mat canvas = Mat::zeros(Size(512, 512), CV_8UC3); Point p1(100, 100); Point p2(350, 100); Point p3(450, 280); Point p4(320, 450); Point p5(80,
2021-03-09 15:58:20 798 2
原创 vs2017配置opencv找不到lib问题
vs2017配置opencv,编译出错LINK : fatal error LNK1181: 无法打开输入件“opencv_world400.lib”解决办法:除了要在属性->链接器->输入->附加依赖项中添加opencv_world400.lib外还需要在连接器->链接器->常规->附加库目录中添加opencv_world400.lib所在路径...
2021-03-06 10:26:19 895 1
原创 【读书笔记】c++primer
c++ primer 5e学习笔记一,第1章1.标准库 类型和函数的集合,每个c++编译器都必须支持。2.()运算符:调用运算符。跟随在函数名后,起调用函数的作用2. List item
2021-01-23 16:24:37 767
原创 子类父类类型转换问题
父类子类类型转换问题子类转换为父类是允许的 父类转换为子类可以通过强制类型转换,但是不管是哪种转换,最终转换的只是地址,并非对象的转换。添加链接描述class animal{};class cat:public animal{};class tiger:public animal{};void traslate(cat *c)//a是{ animal *a = boo...
2020-04-26 20:40:43 697
原创 程序运行时断点失效的问题,原因及解决方法
程序运行时断点失效的问题,原因及解决方法vs2008,问题如下:Solution to "The breakpoint will not currently be hit. The source codeis different from the original version.原因:代码有改动,但是未重新编译,运行时会执行原先编译好的代码;强制解决方法:tools一>opt...
2019-07-18 09:25:30 2253
原创 C风格字符串 字符数组
char ch[] = { 'a','s','d','f','g','h','j'};cout << sizeof(ch) / sizeof(char) << endl;//字符数组元素个数cout << size(ch) << endl;//数组长度cout << strlen(ch) << endl;//字符数组元素...
2019-03-19 22:26:50 609
原创 空字符串
int i = 1;string s;//空字符串if (s.empty()){ cout << "字符串为空" << endl;//字符串确实为空 cout << s.size() << endl;//size 为0;}cout << i << endl;cout << s[0] <<...
2019-03-18 21:31:37 1248
原创 auto与decltype验证
int i = 0, &amp;amp;r = i; auto a = i;//a自动为int型变量, const int ci = i, &amp;amp;cr = ci; auto b = ci;//b自动为int型变量 auto c = cr;//c自动为int型变量 auto d = &amp;amp;i;//d为int型指针 auto e = &amp;amp;ci;//e为指向常量的指针 con...
2019-03-18 11:16:00 129
原创 常量引用 对const的引用 用const修饰的引用 引用const量
“常量引用”是“对const的引用”(对常量的引用)的简称;引用的对象是非常量还是常量可以决定其所能参与的操作;对const量的引用只能用const修饰的引用,但变量(非const量)也可绑定到const修饰的引用,这时,不可通过引用改变变量的值,可通过变量改变const的值;一个常量引用(int)绑定到另一个类型(double)的量上时,绑定的是编译器生成的临时量(一个由double量强制转...
2019-03-17 19:56:41 811 1
原创 负数强制转换为无符号数时计算出错
unsigned u = 10;int i = -42;cout &lt;&lt; u + i &lt;&lt; endl;执行“u+i”时,计算机将负数i强制转换为无符号数。负数在计算机中存储的是补码(当然正数也是)int 占4字节32位的情况下:-42原码:0 000 0000 0000 0000 0000 0000 0010 1010反码:1 111 1111 1111 ...
2019-03-17 10:50:04 4932 3
原创 排序算法
排序算法 int a[] = { 9,8,16,2,11,5,4,21,3,1,20,6 }; int n = sizeof(a) / sizeof(int);冒泡排序:左右两个数比较,如果左边的值大于右边的值,交换。经过第一轮循环后,最大的值放到最右边,第二轮循环对剩下n-1个数进行冒泡排序。总共需要n-1次循环。for (int i = 0; i &amp;lt; n-1; i++)...
2019-03-15 23:54:02 78
原创 C++内存结构与static
一个程序启动,操作系统为程序提供4GB的虚拟内存,用一个32位2进制数来表示这片内存。(并不是4GB都供用户访问,后2GB及前2GB的部分不能访问,0x00000000不能访问)2^32=4 294 967 296=4*1024(G)*1024(M)*1024(K)0x00000000(低地址)–0xFFFFFFFF(高地址),共2^32个地址,地址加1,对应下一个字节。每个地址的容量是1By...
2019-03-13 00:30:47 927
原创 Windows平台基于TCP协议Sockets多人聊天室控制台程序
WSADATA wsaData;WSADATA结构用来被WSAStartup函数调用后返回的 Windows Sockets数据,它包含Winsock.dll执行的数据。请求socket2,1版1.1版只支持TCP/IP协议,//而2.0版可以支持多协议。2.0版有良好的向后兼容性,任何使用1.1版的源代码、二进制文件、应用程序都可以不加修改地在2.0规范下使用。此外wiWORD(双字节)...
2019-03-12 01:33:26 1450
原创 运算符重载
函数调用运算符()重载:类定义函数调用运算符():class fctor{public:void operator()(string msg){cout &amp;lt;&amp;lt; “from t1” &amp;lt;&amp;lt; msg &amp;lt;&amp;lt; endl;}};main函数:string str = &quot;i love oper
2019-03-05 11:06:56 66
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人