![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
lifei_0001
耕种的老农
展开
-
C++ 使用动态库的奇怪问题
1.VS使用动态库,报了“找不到程序入口,···”;原因:在项目属性里引入动态库是名称应该写“xxx.lib”,写成了“xxx.lib”。Windows生成的动态库与Linux不同,包含两个文件一个是xxx.lib,一个是“xxx.dll”。xxx.lib里面包含的是API接口的索引,在编译的时候要用到,而接口实体在“xxx.dll”里,链接的时候用到。2.编译没问题,运行的时候异常或崩溃。原因:使用Debug的动态库,去编译release版本的程序。debug和release是不能通.原创 2020-08-14 08:47:06 · 313 阅读 · 0 评论 -
internal compiler error
linux 下编译时出现internal compiler error: Killed (program cc1plus),大致原因是gcc在编译的时候会大量使用内存,内存不足导致编译错误,解决方法就是加一个交换分区。1. 创建分区文件//创建一个1M x 1024 = 1G 的文件sudo dd if=/dev/zero of=/swapfile bs=1M count=10242. 将上个文件生成Swap 文件sudo mkswap /swapfile3. 激活swap文件原创 2020-05-23 09:33:40 · 2782 阅读 · 0 评论 -
Cmake生成动态库问题
为什么我生成的动态库里找不到类或符号。在使用时编译器会报未声明的定义? 因为我们在使用Cmake组织项目文件时,习惯于将特定功能放在不同的目录,在不同的目录生成Cmake的子项目。子项目生成*.a文件,然后再在根项目链接各子项目。这个时候由于静态库的特点就会出一些问题。 我们在根项目源文件里没有使用某个类,而在引用动态库时又用到了这个类,这是就会出现文章开头的问题。由于静态库...原创 2020-04-21 09:42:22 · 626 阅读 · 0 评论 -
SWIG 生成C#中继承、模板
SWIG对C#的支持好像还不太好,有时需要手动修改一些地方。1. 模板类。貌似不支持模板类的转化。在生成的*.cxx文件中,有些用到模板类的地方需要手动将命名空间加上。2. 命名空间SWIG将所有的接口都放在了定义的模块命名空间下。3. 继承关系文档上讲支持单继承,不支持多重继承,但是在使用的过程中感觉有些类的继承是有的,有些生成类就不包含继承。我的处理方法是在生成类的...原创 2020-04-20 14:02:11 · 519 阅读 · 1 评论 -
ATL开发指南pdf
美国IDG“高级开发工具”图书,ATL开发指南第二版,中文。git clonehttps://github.com/lifei0818/ATLDevelop.git原创 2020-01-13 13:46:27 · 339 阅读 · 0 评论 -
C++/C# 数组传参
托管C++可以将数组作为输入/输出参数。clr封装C++托管接口时,可以使用cli::array<>作为输入参数,而且C#可以获取到C++修改后的数组内容。array数组原型: [qualifiers][cli::]array<[qualifiers]type[,dimension]> ^var;我们只关注下模板参数:type托管数组元素的类型名。可选...原创 2020-01-06 17:16:30 · 3416 阅读 · 0 评论 -
套接字的阻塞与非阻塞
先理一下阻塞和非阻塞的概念:阻塞就是让当前调用线程一直处于停止等待当中,挂起的状态,线程函数会被卡住。非阻塞则是不管运行结果如何,都会继续往下执行(往往都要处理很多返回结果),线程函数里一般都是一个循环,不停的轮询。再理一下发送接收函数:send/sendto函数,只是把应用层的数据拷贝到内核发送缓冲区,并不保证数据一定会被发送到对端,真正执行发送及什么时候发送是由系统(协议栈)决...转载 2019-12-05 16:11:23 · 793 阅读 · 0 评论 -
Cmake 区分引用debug、release 库
Linux下Cmake生成的库,可执行文件都是可以直接放在编者自己设定的目录。而Windows则多了个debug和release的不同。比方说我们将库生成的目录设定为lib/,那么Linux下就直接是lib/目录了,而Windows编译的debug版本则是在lib/Debug下,release在lib/release下。那么怎么在引用库的时候区分呢?一种方法是在Cmake的合适加个预编译的宏,...原创 2019-11-12 09:40:25 · 3457 阅读 · 0 评论 -
Cmake
抄来的,抄来的,抄来的。改错:添加输出目录参考这个:https://www.cnblogs.com/tangxin-blog/p/8283460.html1,建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc向终端输出Hello World字符串。2,安装头文件与共享库。3,编写一个程序使用创建的共享库(静态库和动态库)。cd ...转载 2019-11-08 09:52:47 · 115 阅读 · 0 评论 -
makefile = 、:=、?=、+=的区别
抄一抄:= 是最基本的赋值:= 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值之前一直纠结makefile中“=”和“:=”的区别到底有什么区别,因为给变量赋值时,两个符号都在使用。网上搜了一下,有人给出了解答,但是本人愚钝,看不懂什么意思。几寻无果之下,也就放下了。今天看一篇博客,无意中发现作者对于这个问题做了很好的解答。解决问题之余不免感叹,有时...原创 2019-11-07 10:43:18 · 91 阅读 · 0 评论 -
tcp 心跳
背景最近面试了很多的学生,发现很多TCP的新手对于TCP的使用有一些误区,而这些坑也是当初我曾经疑惑过得地方。网上很少有文章对这些问题有过详细的解析,即是有也只是直接给出结论和做法,没有人将其中的来龙去脉讲解清楚,所以我将这些问题的来龙去脉在这一系列的文章中讲述出来,希望能让广大TCP的新手避开这些坑。问题我面试时经常会问的一个问题是当TCP两端A、B建立了连接后,如...转载 2019-08-07 10:35:06 · 110 阅读 · 0 评论