c++
文章平均质量分 85
夏曹俊
捷帝科技创始人,华为认证HDE全球开发专家,华为HarmonyOS开发者创新大赛导师,南京大学全日制双硕士,近二十年c++跨平台研发经验,领导开发过大量的c++虚拟仿真,计算机视觉,嵌入式图像处理,云安全审计项目,虚拟化安全迁移,中国排联比赛鹰眼系统和高速云摄像机,精确室内定位软硬件。。
展开
-
cmake add_library编译链接静态库cmakelists
add_library中的第二个参数 STATIC 表示是静态库,如果不加STATIC的话比如 add_library(xlog xlog.cpp) 就是默认编译动态库,如果要编译静态库再通过cmake的预制变量来控制。本篇文章我们来编写CMakeLists.txt使用cmake的add_library的构建静态库,并使用target_link_libraries链接指定的静态库。静态库就编译完成,下面引入静态库,添加测试的程序test_xlog.cpp并且再次编辑CMakeLists.txt。原创 2022-09-04 12:29:29 · 3234 阅读 · 1 评论 -
cmake和makefile区别和cmake指定编译器(cmake -G)
其实很多公司和项目就是直接使用make的,但make代码规则严格,语法过于复杂,在做跨平台和跨编译器时的管理更加复杂,移植到不同环境的成本过大。首先cmake是项目构建生成工具,cmake的代码可以与平台系统和编译器无关。makefile 可以理解为是make工具使用的代码,make读取makefile中的配置信息来实现编译、链接和部署。工具” 只是使用这些工具其实就能够编译出所有的目标,但由于命令过于复杂,编译的流程不好控制。也就是说cmake是用来生成makefile和其他项目生成工具配置的。原创 2022-09-03 13:06:33 · 14513 阅读 · 2 评论 -
cmake使用方法详解 - Windows Linux MacOS cmake安装教程
适合人群有部分语言基础,想要学习Linux平台项目开发想要学习跨平台构建方案想要学习自动化单元测试方法的同学公司需要需要使用cmake做项目构建原创 2022-09-01 17:43:48 · 2571 阅读 · 0 评论 -
操作系统设计中的加电引导
作者:丁宋涛系统启动过程概述在掀下电脑开机按钮后,电源就会开始向主板和其他外围设备供电。初始状态下的电压还不太稳定,因此并不会立即开始指令的执行。此时,主板上的控制芯片组会发出重置信号,然后等待内部初始化工作的完成。等到控制芯片组检测到电源己经开始稳定供电后,它撤去信号,跳转到合适的内存地址处,读取并执行第一条机器指令。系统需要完成一系列的准备工作,以确保后续系统及程序的正确执行。这些准备工作包括检测基础的外围设备是否存在、检测系统实际物理内存及程序可用内存大小、建立内存空间的映射图、对硬件设备发出原创 2020-07-04 17:13:27 · 631 阅读 · 0 评论 -
OpenSSL 3.0 版本已经发布VS2019编译源码教程
1 OpenSSL 3.0版本在2020年五月发布OpenSSL3.0 在2020年5月发布了第一个版本,随即在六月份又发布了一些alpha版本,版本修正了一些bug,增加了一些协议支持,继续支持国密sm2 ,sm3 ,sm4(从1.1.1版本开始支持)。 3.0版本完全兼容1.1.1版本接口,但低级别的MD2, MD4, MD5, MDC2,SHA1, SHA224, SHA256, SHA384, SHA512,AES,DES,ECDH,DSA,ECDSA,RSA接口都会被警告将要被...原创 2020-06-30 14:42:09 · 2474 阅读 · 2 评论 -
TIOBE11月份编程语言排行榜:C非常接近Java,分析下中美的就业情况
我们先看看他们官方对数据的解读本月TIOBE指数前20位出现了一些有趣的变动。首先,C语言现在非常接近Java。差异只有0.2%。也许C会在年底前再次成为第一。看到谁排在前十也很令人兴奋。这种情况几乎每个月都在变化。两个月前是SQL,上个月是Objective-C,但是这个月Swift接管了。与排名第11位的Ruby的差距几乎为0.4%,这可能意味着至少在未来几个月里,Swift仍将保持前10...原创 2019-11-06 11:48:27 · 733 阅读 · 0 评论 -
C++开发python windows版本的扩展模块示例
C++开发python windows版本的扩展模块示例测试环境介绍和准备测试环境:操作系统:windows10Python版本:3.7.0VS版本:vs2015社区版(免费)相关工具下载:VS版本vs2015社区版(免费)win10SDK(安装vs2015是可以选择,如果没有安装则需要独立安装)Python3.7.0 win32 安装文件http://ff...原创 2018-11-08 12:09:07 · 451 阅读 · 0 评论 -
Python3.7源码在linux(ubuntu)下的编译和安装
在我们的c++项目要引入脚本,之前用了lua,也是非常好用,缺点就是学习的人比较少,所以考虑在新的项目中引用python作为脚本。首先先说明测试环境宿主机:window10虚拟机:VMware 12 ubuntu 16.04 desktop 64位版本1 安装虚拟机和ubuntu 16.04 desktop 64位版本 http://www.ffmpeg.club/tools_do...原创 2018-11-14 11:49:07 · 2324 阅读 · 0 评论 -
python3 整数类型PyLongObject 和PyObject源码分析
python3 整数类型PyLongObject 和PyObject源码分析一 测试环境介绍和准备测试环境:操作系统:windows10Python版本:3.7.0 下载地址VS版本:vs2015社区版(免费) 下载地址win10SDK(安装vs2015是可以选择,如果没有安装则需要独立安装)http://ffmpeg.club/python二 如何查看源码1 ...原创 2018-11-20 14:59:50 · 874 阅读 · 0 评论 -
python3使用ctypes在windows中访问C和C++动态链接库函数示例
python3使用ctypes在windows中访问C和C++动态链接库函数示例这是我们的第一个示例,我们尽量简单,不传参,不返回,不访问其他的动态链接库一 测试环境介绍和准备测试环境:操作系统:windows10Python版本:3.7.0VS版本:vs2015社区版(免费)相关工具下载:VS版本vs2015社区版(免费)Python3.7.0 (源码和安装文...原创 2018-11-16 12:54:47 · 1307 阅读 · 0 评论 -
windows编程 进程的创建销毁和分析
Windows程序设计:进程进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,在Windows编程环境下,主要由两大元素组成:• 一个是操作系统用来管理进程的内核对象。操作系统使用内核对象来存放关于进程的核心信息。• 另一个是地址空间,在地址空间囊括了所有可执行模块和动态链接库的代码和数据。动态内存分配的空间也在其中,典型代表是线程堆栈和堆内存分配。1进程与线程进...原创 2018-11-27 13:35:20 · 2861 阅读 · 0 评论 -
mysql8.0 Server 在Windows平台中的安装、初始化和远程访问设置
mysql8.0 server安装1.下载mysql 8.0 可以到mysql官网下载https://dev.mysql.com/downloads/mysql 或者如下地址 mysql-8.0.13 Server windows X64安装文件 http://libmysql.com/download 2.安装mysql 8.0我这边选择了custom定...原创 2019-04-28 16:44:04 · 455 阅读 · 0 评论 -
windows 平台使用 VS2017 编译openssl源码
1)依赖安装安装 perl 脚本解释器 下载http://libevent.net/download 安装 nasm 汇编器 C:\Users\xiaca\AppData\Local\bin\NASM 下载http://libevent.net/download 默认会安装用户目录 C:\Users\用户名\AppData\Local\bin\NASM ...原创 2019-04-29 17:24:11 · 681 阅读 · 0 评论 -
windows 平台使用 VS2017 编译 libevent 源码
一 依赖库编译先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到。1)windows 平台使用 VS2017 编译 openssl 源码参考前面的文章 openssl 默认编译到 C:\Program Files (x86)\OpenSSL 目录,包含收文件,lib文件和dll文件,...原创 2019-04-30 17:32:54 · 1165 阅读 · 0 评论 -
Leetcode基础篇30天30题系列之数组:模拟计算法
作者:丁宋涛数组:加一题干:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储一个数字。你可以假设除了整数0 之外,这个整数不会以零开头。参考样例:示例1:输入:[1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例2:输入:[4,3,2,1]输出:...原创 2019-06-18 17:53:19 · 586 阅读 · 0 评论 -
桌面程序设计已经过时了,还有没有必要学习MFC?
“现在已经是人工智能、大数据的时代,云+端才是王道,桌面程序设计已经过时了,还有没有必要学习MFC?”这是许多困扰刚刚入行朋友的问题,不可否认,由于python、Java等开发语言和环境的流行,Visual C++的应用范围也相应缩小。“有人说现在c++越来越接近边缘性语言?c++程序员以后的发展方向在那里,我学习MFC会不会被淘汰?”的确C++作为普及性应用程序设计语言的地位已经不再...原创 2018-11-09 13:29:42 · 4097 阅读 · 0 评论 -
Python3.7源码在windows(VS2015)下的编译和安装
Python3.7源码在windows(VS2015)下的编译和安装下载官方源码,使用vs2015(WIN10SDK),最python3.7.0的源码进行编译,编译出不同的版本(release,debug),并配置python的运行环境(环境变量的配置)。测试环境介绍和准备测试环境:操作系统:windows10Python版本:3.7.0VS版本:vs2015社区版(免费)...原创 2018-11-06 12:00:39 · 3197 阅读 · 0 评论 -
c++ 成员函数指针
C++中,成员指针是最为复杂的语法结构。但在事件驱动和多线程应用中被广泛用于调用回叫函数。在多线程应用中,每个线程都通过指向成员函数的指针来调用该函数。在这样的应用中,如果不用成员指针,编程是非常困难的。 刚遇到这种语法时也许会让你止步不前。但你会发现,使用恰当的类型定义之后,复杂的语法是可以简化的。本文引导你了解成员函数指针的声明,赋值和调用回叫函数。 成员函数指针的声明转载 2011-12-18 23:34:55 · 492 阅读 · 0 评论 -
如何把VS2008上编的debug、release程序在没装VS的xp机器上运行(转载)
如何把VS2008上编的debug、release程序在没装VS的xp机器上运行(转载)用VS2008 SP编写的MFC程序,拷贝到其他没装VS2008的机器上直接运 行,肯定是不行的。即使选择静态链接MFC,有时候系统还是会提示“应用程序配置不正确”。这是因为程序中可能不止用到了9.0版本MFC,还可能有 ATL、CRT、OPENMP等。在自己的机器上运行时,系统会到"C:\WIND转载 2012-02-23 13:16:15 · 579 阅读 · 0 评论 -
QT4和ogre结合代码(英文)
先贴出原文,随后翻译Note: There is a recent QOgreWidget written by djbe that is tested on Mac and Linux:http://www.ogre3d.org/phpBB2/viewtopic.php?p=258064 Alanic?However the links pointing to this ve转载 2012-02-23 17:15:55 · 1511 阅读 · 0 评论 -
VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程
VC2005从开发MFC ActiveX ocx控件到发布到.net网站的全部过程开篇语:最近在弄ocx控件发布到asp.net网站上使用,就是用户在使用过程中,自动下载安装ocx控件。(此文章也是总结了网上好多人写的文章,我只是汇总一下,加上部分自己的东西,在这里感谢所有在网上发表相关内容的朋友们。)ActiveX控 件用于Web的过程是将控件嵌入主页中,用户通过浏览器访问该主页时,转载 2012-02-24 16:33:21 · 662 阅读 · 0 评论 -
OGRE WEB ATL ActiveX 制作
OGRE WEB ATL ActiveX 制作 2011-05-31 16:35:08| 分类:三维虚拟现实| 标签:ogre atl activex |字号大中小 订阅找个OGREMFC的改就行 主要部分如下:新建 ATL 项目 ,添加ATL控件,需要继承Staticvoid COgreWebActiveXCtrl::SetupOgre(v转载 2012-02-24 16:34:28 · 902 阅读 · 0 评论 -
FFMPEG系列课程(一)打开视频解码器
从今天开始准备些FFmpeg的系列教程,今天是第一课我们研究下打开视频文件和视频解码器。演示环境在windows上,在linux上代码也是一样。 windows上可以不编译ffmpeg源码,后面我会分别讲解在linux和在windows上如何编译ffmpeg,直接在FFmpeg官网下载已经编译好的dll和lib文件,下载地址https://ffmpeg.zeranoe.com/builds/ 里面有32位和64位的,我下载的32位。原创 2016-12-27 07:09:58 · 3475 阅读 · 3 评论 -
C/C++网络编程在windows和linux中将socket设置为阻塞和非阻塞
在 socket编程中,对于socket的读写默认都是阻塞的,但有的情况我们需要将其设置为非阻塞,比如做多路复用,或者通过select实现连接超时等功能,将socket设置为非阻塞,在windows和linux中的接口有所不同,在windows中使用ioctlsocket函数,在windows和linux中的接口有所不同。在windows中使用ioctlsocket函数,在linux中使用 fcntl函数,下面我们做一个跨平台设置阻塞的函数SetBlock。原创 2017-03-22 08:42:35 · 2078 阅读 · 0 评论 -
TIOBE2017年4编程开发语言排名和20年经验体会
每月一次的语言热门排行榜又发布了,当然国外的语言热门程度和国内还是有一定的区别,不过也可以作为参考,大家一起说下自己工作的语言,给想要学习的同学做一些借鉴,我先说下我了解和熟悉的一些语言。首先声明不保证观点都正确,只是根据我近20年的学习和研发经验得出的体会,我也不会认为哪种语言最好,只是每种语言有不同的应用场景。先说下我各种开发使用语言的背景,这样你也能判断出我那些体会是有价值的。每月一次的语言热门排行榜又发布了,当然国外的语言热门程度和国内还是有一定的区别,不过也可以作为参考,大家一起说下自己原创 2017-04-12 08:33:04 · 2542 阅读 · 2 评论 -
c++ socket编程 http客户端连接代码示例
如何学习网络编程,学习网络编程要确定你要做什么样的程序,如果是普通的应用程序的网络编程,你可能对网络内部原理不理解也没有多大问题,直接学会网络编程的各种接口,但如果你是要做高性能服务端程序或者是嵌入式设备的程序,那就要求你对网络编程原理有一定理解,因为你需要解决很多复杂的问题,只看api接口是不够的。 网络编程我们涉及到的第一个案例概念的就是socket或者套接字,这个名字就起的让人不原创 2017-05-22 14:34:03 · 2547 阅读 · 0 评论 -
FFMPEG系列课程-读取视频帧
再来介绍下如何读取视频帧,打开视频参考前面的文章,首先需要创建一个帧的存放对象AVPacket pkt;memset(&pkt, 0, sizeof(AVPacket)); 再通过 int err = av_read_frame(ic, &pkt); 读取帧数据,其中ic是之前打开的视频流句柄。读取视频帧后要注意一点av_read_frame会自动给视频帧分配空间,返回值0表示成功。原创 2016-12-30 14:02:59 · 2875 阅读 · 0 评论 -
C++编程使用QT5 SDK录制屏幕并显示
在项目中,我们有要录制屏幕的需求,录制屏幕有多种方法,可以基于windows api的BitBlt 、ffmpeg的AVDevice、directx 和QT,本文讲解基于QT5的抓屏。QT相对于其他几种抓屏方式优势是跨平台做的比较好,接口简单,劣势相对于directx抓屏消耗大一些,但directx只能是windows。经过测试directx抓屏速度最快,其他接口速度基本一致。在我的电脑上qt 1080P屏幕抓屏消耗60~80毫秒,720p消耗30~50,也就是说如果抓屏1080我一秒最多录制10帧。这个原创 2017-07-27 10:48:21 · 4104 阅读 · 4 评论 -
为什么 qt 成为 c++ 界面编程的第一选择?
为什么qt成为c++界面编程的第一选择一、前言为什么现在QT越来越成为界面编程的第一选择,笔者从事qt界面编程已经有接近8年,在这之前我做C++界面都是基于MFC,也做过5年左右。当时为什么会从MFC转到QT,主要原因是MFC开发界面想做得好看一些十分困难,引用第三方基于MFC的界面库代码也是比较混乱,当时主要看到qt有qss样式设计这个功能,决定试下。当项目移植到到QT后,觉得MFC真的...原创 2017-11-16 09:21:00 · 15963 阅读 · 3 评论 -
CSDN学院中的Android影音(流媒体)播放器开发实战基于NDK、C++和FFmpeg 课程已经上线
CSDN学院中的 FFmpeg安卓流媒体播放器开发实战视频课程已经上线课程开发工具: AndroidStudio3 Android影音(流媒体)播放器开发实战基于NDK、C++和FFmpeg 对学员要求: 本课程是具有很强实战性的应用编程,课程中会从原理讲解到代码实现,但由于项目有一定复杂度,希望学习本课程的同学要掌握c++的基本语法,课程中也用到java的代码但比较少,如果是c...原创 2018-03-23 08:52:29 · 1450 阅读 · 3 评论 -
C++函数调用方式(_stdcall, _pascal, _cdecl...)
C++函数调用方式(_stdcall, _pascal, _cdecl...)总结 收藏 __stdcall: _stdcall 调用约定相当于16位动态库中经常使用的PASCAL调用约定。在32位的VC++5.0中PASCAL调用约定不再被支持(实际上它已被定义为__stdcall。除了__pascal外,__fortran和__syscall也不被支持),取而代之的是__std转载 2010-03-11 09:19:00 · 384 阅读 · 0 评论