注意,–build-type=complete表示生成debug release static shared的各种版本
'Microsoft.VC90.CRT,version="9.0.21022.8"
Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容。在C++社区中影响甚大,其成员已近2000人。 Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。
我仔细的在C:\boost_1_64_0目录下搜索了一下,根本就没有libboost_regex-vc140-mt-sgd-1_64.lib这个库文件,那咋办,找教程编译呗 编译boost库工程的是一个叫bjam.exe的程序,但是从网上下载下来的boost_1_64_0.7z里是没有的,所以首先是运行boost根目录下的bootstrap.bat批处理文件,编译后的bjam.exe会自动拷贝到该目录下(bjam必须与boost-build.jam在同级目录)。
经历了将近半年多的时间boost终于发布了1.35.0版本(前版本1.34.1发布于2007/7), 其编译方法和原来的编译方法基本上是一致的,主要改变包括1.34.0以来bjam的toolset所 提供的参数名称的改变(具体参见《boost1.34.0编译日志》)外,还包括bjam的编译默认 选项的变化,在1.35.0之前的版本默认编译时会自动编译各种版本的库,包括静态库、 动态库、debug库和release库等全部的版本,但是到了1.35.0时默认的选择仅仅编译release 版本的库,这样一来在开发的时候就不能进行必要的调试了,为了能够使其编译全部的版本 需要在bjam的命令行参数中添加一个–build-type=complete类型的参数来指明需要编译全 部的版本,所需要编译同时为了使得regex库能够通过ICU库支持Unicode,在编译上需要有 一些特殊的选择。我在Visual Studio 2005 Pro + SP1环境下编译了该库,为了避免走弯路 所以将其编译的方法进行说明,以方便大家编译。 由于boost是采用其自己的bjam工具通过命令行进行编译的,所以必须在Windows下开启console窗口,同时必须将Visual Studio中C++目录下的环境vcvarsall.bat配置脚本运行一遍,以设置好VC的编译器环境变量。 1. 编译不带ICU支持的boost库 此种情况下的boost库编译起来比较的简单,在准备好的console窗口中输入:
C++11 中推出了三种智能指针,unique_ptr、shared_ptr 和 weak_ptr,同时也将 auto_ptr 置为废弃 (deprecated)。
Windows sockets(简称 Winsock) 是微软的窗口系统结构 (WOSA) 的一部分。它是起源于UNIX上的 Berkeley Software Distribution(BSD) 版本的套接字、并为 Windows 进行了专门地扩展。 Internet 是在 UNIX系统上发展起来的 ,在 UNIX 上有许多成熟的编程接口 ,其中最通用的是一种叫做 sockets(套接字) 的接口。套接字的实质是通信端点的一种抽象 ,它提供一种发送和接 收数据的机制。网络软件商为 Windows 开发一套标准的、通用的 TCP/ IP 编程接口 ,并使之类似于 UNIX下的 sockets ,这就是 Windows sockets ;Windows socket 的实现一般都由两部分组成 :开 发组件和运行组件。开发组件是供程序员开发 Winsock 应用程序使用的、它包括介绍 Winsock实现的文档、Winsock 应用程序接口 (API) 引入库和一些头文件。运行组件是 Winsock 应用程序接口的动态连接库(DLL) ,文件名为 Winsock. DLL ,应用程序在执行时通过装入它来实现网 络通信功能。 最初 ,Winsocket1. 1 版是专门为 Internet 设计的 ,现在的 2. x 版己经不再限于 Internet 和TCP/ IP 协议 ,它通过提供扩展的 API 编程接口 ,把自己的应用范围扩大到现存的和正在出现 的各种网络和协议 ,包括 PSTN、ISDN、无线网、所有的局域网协议、异步传输模式 ATM 等等 ;并且允许应用程序对所建立连接的可靠性、冗余度和带宽进行控制。由此可见 ,Winsock 有着广泛的应用。 Windows sockets 是 Windows 下网络编程的规范。这套规范是 Windows 下得到广泛应用的、开放的、支持多种协议的网络编程接口。它定义并记录了如何使用 API 与 Internet 协议族(IPs、通常我们指的是 TCP/ IP) 连接 ,尤其要指出的是所有的 Windows sockets 实现都支持流套接字和数据报套接字。当我们为客户机/ 服务器开发一个特殊的应用程序时 ,我们可以通过套接字来交换我们的数据结构和数据报 ,以完成应用程序之间的通信。应用程序调用 Winsock 的 API实现相互之间的通讯。Winsock 又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。 它们之间的关系如图 1 所示 :
软件调试是我们软件开发过程中的重要一课。在前面,我们也讨论过程序调试,比如说这里。今天,我们还可以就软件调试多讲一些内容。比如说条件断点,数据断点,多线程断点等等。
周五晚,小雨,少见的未加班。无聊,遂准备写一篇博客,介绍一下C和C++运行库,只因发现工作几年的人对此一知半解的大有人在。 在使用VC构建项目时,经常会遇到下面的链接错误:
针对目前开发中已大多使用ARC自动引用计数技术,因此常用关键字有strong、weak、assign、copy、retain、nonatomic、atomic
VC和gcc不同,不能保证静态变量的线程安全性。这就给我们的程序带来了非常大的安全隐患和诸多不便。这一点应该引起我们的重视!尤其是在构造函数耗时比較长的时候。非常可能给程序带来意想不到的结果。本文从測试代码開始,逐步分析原理,最后给出解决方式。
原文链接:https://www.cnblogs.com/DOMLX/p/10945309.html
a) Reusing UITableViewCell:利用cellWithTableView:cellIdentifier:nibName: b) Reusing Images/ Cache Data:imageNamed做了个很重要的事情:此方法cache了图片。但是这种方法只能从bundle里取出图片,即,不可以通过此方法从网络下载或者本地加载。其他方法,诸如[UIImage alloc] initWithContentOfFile:]或者 [UIImage alloc] initWithData] 则不会自动cache数据 c) 减少准备时间,在展示前将数据准备就绪 d) 善用DrawRect方法,速度比通过nib读取或者addSubView方法快很多,原因在于drawRect是GPU方法,而GPU方法在渲染或者显示UI时更快。 e) 切记设置自定义View的backgroundColor为white,默认为black f) 如果app有太多的子类或者一个复杂的结构,考虑通过代码来draw,让GPU来加速过程 g) Cache the hight。因为如果计算hight的过程很慢,则会影响tableView的渲染 h) Opaque。如果一个View是透明的,则iOS需要在一个像素上渲染两次或多次,因为一个像素在那时候属于多个view。请设置opaque为YES i) 尽量降低Graphical Effects
微视iOS接入QAPM作为项目的性能监控工具已有一年多,打开的功能包括掉帧率、卡顿、SIGKILL、内存触顶、VC泄露和大块内存监控。在QAPM同学的日常运营过程中,发现微视的Tapd在近期某段时间内突然出现有较多的sigkill类型的bug上报,于是借这次案例对sigkill进行一次分析总结。
错误是引用的是静态库,但是配置成动态库导致的,只需要修改成”多线程(/MT)“就可 这段错误的意思就是我调用的是静态库,但是我程序是dll动态,但是我这dll调用静态库就调用不成了吗? 解决方案如下
右击项目->属性,进行配置: VC++目录->包含目录,添加:“D:\Program Files (x86)\MPI1\Include;” (替换为你的安装目录)
今年准备安安心心写一个协程库。一方面是觉得协程挺有意思,另一方面也是因为C/C++在这方面没有一个非常权威的解决方案。 按照我自己风格还是喜欢C++,所以协程库定名为 libcopp 。 源码托管在 github: https://github.com/owt5008137/libcopp 镜像托管 http://git.oschina.net/owent/distinctionpp
多线程创建其实十分简单,在windows系统下面有很多函数可以创建多线程,比如说_beginthread。我们就可以利用它为我们编写一段简单的多线程代码,
改变了栈的大小,但是把CreateThread的第2参数改成0x100000或者更小的时候,程序还是会出现这样的问题,只有将栈的大小还原为默认值,且CreateThread的第2参数为0 才能正确运行
在C++的标准库中,std::fstream是个挺好用的文件读写流,操作文件很方便,因为是C++标准库,所以没有其它的环境依赖。在使用fstream过程中,有个打开中文路径文件会失败的问题,自己的代码中一直没处理好,这几天终于有点闲心,把这里改透。涉及很多知识点,也是个遗留已久的问题,特此做个记录。
分别对于两个进程而言,可观察行为确实没有变化。而这种优化在某些时候确实会有比较明显的效果。但是很显然,语义变化了。在原来的结果里不可能发生 x和y都为0的情况,而优化过后,有可能出现。 再来个例子:
一般当程序发生异常时,用户代码停止执行,并将CPU的控制权转交给操作系统,操作系统接到控制权后,将当前线程的环境保存到结构体CONTEXT中,然后查找针对此异常的处理函数。系统利用结构EXCEPTION_RECORD保存了异常描述信息,它与CONTEXT一同构成了结构体EXCEPTION_POINTERS,一般在异常处理中经常使用这个结构体。 异常信息EXCEPTION_RECORD的定义如下:
基于 tcp 实现群聊功能,本项目设计是在「windows环境下基于套接字(Socket)和多线程编程」进行开发的「简易聊天室」,实现了群聊功能,在VC6.0和VS2019运行测试无误。
本文是由来自上海交通大学 Apex 实验室的本科生 Lianmin Zheng 发表于 TVM 的一篇博客,文中阐述了如何使用 TVM 优化移动端上的 ARM GPU 的深度学习。 AI 研习社对原文
这段时间在使用MFC做媒体播放器项目,查询了不少资料,用到的技术主要有ADO、多线程、DirectShow、MFC相关控件包括ActiveX控件(Windows Media Player、Active Movie3)的使用等等一些东西。用的主要参考文档有Windows Media Player相关的开发文档、MSDN。
前言 专注、坚持,是优良的品格。 正文 1、cell和cell.contentView 的区别 在给UITableViewCell添加视图的时候,我们有以下两种做法: [cell addSubview
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test) name:@"test"object:nil];
E:\Cgal\cmake\boost_1_55_0\boost_1_55_0;C:\Program Files\CGAL\include;%(AdditionalIncludeDirectories)
在渗透测试中,针对各项服务(FTP、RDP等)的爆破往往是繁琐的,一款好用的爆破工具,可以提高渗透测试的效率,超级弱口令检查工具(作者shack2)支持很多服务的爆破,支持批量导入爆破。
小伙伴们有没有遇到过,自己使用Qt库开发的小程序,在本地电脑上跑得很欢快,但是当想要把编译好的.exe可执行文件发给朋友玩玩的时候,发现在没有安装Qt或者VS环境的电脑上是跑不了的。究其原因,这是因为大家在编译程序时,使用的是动态编译。也就是说,编译好的程序在运行时还需要另外加上相应的DLL库文件,否则就会出错。而如果想将生成的程序连同所需要的依赖库一起完整地打包成一个.exe可执行程序,那就需要使用静态编译。
根据文章内容总结的摘要
首先声明,本文并非原创,纯属搬运,内容来自一位叫做飞扬青春的大神的Gitee主页,主要是为了收藏下面介绍的100多个Qt开发经验。比如qss的ANSI编码、嵌套窗口中主窗口无法接收鼠标移动事件等,又比如我用qss设置窗口样式,但是项目每次重新构建以后,样式表就会不生效等问题,也花了自己不少时间去解决,所以在这里转发大神的经验,留作以后参考和逐条的研究,也分享给更多正在学习Qt或者正在使用Qt进行程序开发的朋友们。
这几天在看 libevent 的官方书籍跟着学习,开着个 Ubuntu 的虚拟机在 Windows 下来回切换,学习效率实在低下,且不说编译、测试这些复杂的步骤。所以决定研究一下如何在 Windows Visual Studio 环境下使用 libevent 库,这样学习效率会高很多。从网上借鉴了一些教程,都写的比较粗糙,我也是搞了好一会才搞定,所以自己记录一下。
由于诸多原因,前几天抽了点时间在网上找了一些OpenSSL的资料。网上的资料鱼龙混杂,我看原创的并不多。部分资料是讲OpenSSL命令行的操作,另一部分(基本上转载的那样一两篇)是Linux下的OpenSSL的API。
这是由 Java 官方发布,Oracle JDK 研发 Nipafx 制作的节目,包含 JDK 近期的研发进展和新特性展望和使用,这里加上个人译制的字幕搬运而来。我把 Nipafx 的扩展资料详细研读并提取精华做了个人详细解读:视频地址(熟肉)
最近在研究数据竞争检测方法,之前的工作是参考了Eraser这个工具1997年提出的基于Lockset方法的动态数据检测,
Happens-before方法中最基础的方法Djit+,Djit+使用向量时钟VC进行数据竞争分析。下面这篇文章介绍的是FastTrack算法,在Djit+基础上进行的改进,将Djit+的时间复杂度从O(n)降到接近于O(1)。首次看的同学还是建议先看我之前写的有关介绍Djit+的相关基础内容。
PHP5.3以后 For Windows 提供了四个版本VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6 x86 Thread Safe
首发于Freebuf - Pikachu靶场系列之XSS钓鱼攻击与PHP中的HTTP认证,转载需注明出处。
Log4cpp是一个开源的C++类库,它提供了在C++程序中使用日志和跟踪调试的功能。使用log4cpp,能够非常便利地将日志或者跟踪调试信息写入字符流、内存字符串队列、文件、回滚文件、调试器、Windows日志、本地syslog和远程syslogserver中。
中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。在运行一个程序的过程中,断续地以“插入”方式执行一些完成特定处理功能的程序段。
互联网时代,单机客户端应用几乎不存在,许多服务存在云端,客户端通过HTTP(Restful API)访问云端服务,所以HTTP请求基础能力是客户端必备的。
LNK2001 无法解析的外部符号 __except_handler4_common msvcrt.lib
2.在链接-》输入-》附加依赖库,中添加,相应的staticlib库目录中的所有条目
比较并替换,实现并发算法时常用到的一种技术,在java同步器中大量使用了CAS技术,神奇的实现了多线程执行的安全性 思想很简单:三个参数 一个当前内存值V 旧的预期值A 即将更新的值B 当且仅当预期值A和内存值V相同时,将内存值修改为B并返回true,否则什么都不做,并返回false。 问题 一个n++的问题。 public class Case { public volatile int n; public void add() { n++; } } 通过java
在windows中进程只是一个容器,用于装载系统资源,它并不执行代码,它是系统资源分配的最小单元,而在进程中执行代码的是线程,线程是轻量级的进程,是代码执行的最小单位。 从系统的内核角度看,进程是一个内核对象,内核用这个对象来存储一些关于线程的信息,比如当前线程环境等等,从编程的角度看,线程就是一堆寄存器状态以及线程栈的一个结构体对象,本质上可以理解为一个函数调用,一般线程有一个代码的起始地址,系统需要执行线程,只需要将寄存器EIP指向这个代码的地址,那么CPU接下来就会自动的去执行这个线程,线程切换时也是修改EIP的值,那么CPU就回去执行另外的代码了。
1。C++编译时,出现这样的错误 d:\program files\microsoft visual studio\vc98\include\stdio.h(36) : error C2143: syntax error : missing ';' before 'string' d:\program files\microsoft visual studio\vc98\include\stdio.h(36) : fatal error C1004: unexpected end of file found
通常情况下并不会使用到DLL的MAIN函数,因为delphi的框架已经把Main函数隐藏起来
领取专属 10元无门槛券
手把手带您无忧上云