C/C++
文章平均质量分 76
bodybo
这个作者很懒,什么都没留下…
展开
-
CentOS7安装boost_1.80
后来又在系统上安装了一些别的库,如mkl、armadillo、protobuf、sqlite等,再次按上面命令重新编译boost_1.80,静态库.a文件就不对了,参与链接生成别的so文件时报错,提示要recompile with -fPIC,说明此次编译静态库文件-fPIC没起作用。第一次按如下命令安装,这是以前安装1.67的命令,安装后生成动态链接库.so文件和静态链接.a文件,编译链接生成其他动态链接库.so文件用到boost的静态库.a文件也没问题。原创 2023-03-06 22:03:20 · 612 阅读 · 0 评论 -
MKL库性能对比(转载)
英特尔数学核心函数库(Intel Math Kernel Library,MKL)是一套经过高度优化和广泛线程化的数学例程,专为需要极致性能的科学、工程及金融等领域的应用而设计。核心数学函数包括BLAS、LAPACK、ScaLAPACK1、稀疏矩阵解算器、快速傅立叶转换、矢量数学及其它函数。通过限制线程数量、观察 dgemm 的性能变化,以下示例展示了线程如何影响性能。使用矩阵乘法(cblas_cgemm)为例来对比不同环境与配置的性能差距。1.2 使用嵌套循环(C)计算矩阵乘法。1.1 使用dgemm(转载 2023-01-14 09:06:02 · 4758 阅读 · 1 评论 -
C++11\14\17\20 特性介绍(转载)
本文按照 cppreference 列出的特性列表依次介绍。本篇文章较长,而且都是内容「离散」的语言特性介绍,所以是很有必要加上目录的,但发布到「简书」时才发现「简书」是没法自动生成目录的。但是幸运的是,前一段时间在 github 上发现了一个非常非常赞的开源插件:简悦。它可以对页面进行二次处理从而提供风格统一且体验一致的页面,同时它也支持自动生成目录。插件也非常有产品的设计感,感觉作者践行了一句话:「不会设计的产品经理不是好的开发」。所以非常推荐读者安装这个插件(按照上述链接的官方教程安装即可),.转载 2022-05-21 18:40:42 · 6088 阅读 · 1 评论 -
C#不能调试非托管C++代码问题
vs2013开发C#调用C++的DLL,C++非托管。调试代码时发现C++的断点无法进入,如果把C++代码设为启动项目,C#的断点又无法进入。解决方案:设置C#项目的属性,具体: 属性-》调试-》启用调试器-》启用本机代码调试设置好后,C#设为启动项目,就可以正常调试非托管C++代码了。原创 2015-06-14 23:28:26 · 4079 阅读 · 0 评论 -
C++多线程同步效率对比之临界区和原子锁
多线程编程经常遇到数据同步问题,通常的做法就是原创 2014-10-21 15:11:00 · 10259 阅读 · 2 评论 -
【解决】默认库“msvcrtd.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
出处:http://blog.csdn.net/iesneaker/article/details/6524459警告信息如下: 1>LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library 原因:在使用多线程调试dll(MDd)模式的时候转载 2014-10-09 17:22:59 · 45471 阅读 · 4 评论 -
Building an MFC project for a non-Unicode character set is deprecated
出处VS2013多字节工程问题使用VS2013编译旧版VC++程序时,提示Building an MFC project for a non-Unicode character set is deprecated,微软提供了解决方案。一、错误信息[cpp] view plaincopyprint?"font转载 2014-09-30 15:51:34 · 1256 阅读 · 0 评论 -
使用STL string慎用memcpy和void*
项目中常用STL的string,最近遇到些问题原创 2014-10-17 17:41:38 · 4501 阅读 · 2 评论 -
如何设置进程(线程)在指定的CPU上运行
处处实现方法进程与指定cpu绑定:SetProcessAffinityMask(GetCurrentProcess(), dwMask);线程与指定cpu绑定:SetThreadAffinityMask(GetCurrentThread(),dwMask);dwMask为CPU序号的或运算值:1(0001)代表只运行在CPU1,2(0010)代表转载 2014-11-04 18:06:22 · 3942 阅读 · 0 评论 -
多线程的那点儿事
出处:http://blog.csdn.net/pizi0475/article/details/17627631【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】(基础篇) 多线程编程是现代软件技术中很重要的一个环节。要弄懂多线程,这就要牵涉到多进程?当然,要了解到多进程,就要转载 2014-09-28 16:46:13 · 1931 阅读 · 0 评论 -
vc工程内存泄露检测方法
内存泄漏,即未能正确释放以前分配的内存,是 C/C++ 应用程序中最难以捉摸也最难以检测到的 Bug 之一。 最初少量内存泄漏可能不引人注目,但随着时间的推移,内存泄漏越来越多,就会出现一些征兆,包括性能下降,在应用程序内存不足时发生崩溃。 更严重的是,占用了所有可用内存的泄漏应用程序可能会导致其他应用程序崩溃,从而无法确定问题出在哪个应用程序。 即使看似无害的内存泄漏也可能说明存在其他问题应当纠转载 2014-09-24 13:48:22 · 918 阅读 · 0 评论 -
Openssl的安装 (转载)
openssl简介openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准实现和PKCS12个人数字证书格式实现等功能。op转载 2014-06-03 10:56:05 · 1327 阅读 · 0 评论 -
Windows上安装OpenSSL和生成证书
1,先下载OpenSSLhttp://www.slproweb.com/products/Win32OpenSSL.html2,下载安装Perlhttp://www.perl.org/get.html下载 ActiveState Perl 一,建立CA1,建立一个工作目录SSLmkdir SSLcd SSL2,用CA脚本自动建立一个CACA.pl -ne转载 2014-06-03 10:57:48 · 14759 阅读 · 0 评论 -
_com_util::ConvertBSTRToString BUG解决方案(转载)
最近做了一个COM组件负责socket通讯,发现一个无法解决的问题,当socket发送较慢(当连一个代理服务器发送时通常会慢一些),COM组件提供的接口函数中将BSTR转换为char*时会造成程序崩溃,具体异常是操作了受保护的内存之类,跟踪代码发现出问题的代码为:_com_util::ConvertBSTRToString,这是微软提供标准转换代码,心灰意冷,以为这个问题绕不过去了。 后来无意转载 2012-10-08 08:51:50 · 4101 阅读 · 4 评论 -
socket穿透代理代码(C++版)
写代码经常会遇到socket要通过代理连接服务器的情况,代理类型通畅有三种:HTTP、SOCK4和SOCK5,通过学习和网上参考相关代码,写了个代理类来实现该功能,贴出来与大家共享才贴出来两天,刚在百度一搜竟然发现已被一字不改的转载到好几个网站去了,连转载的字样都没有,不反对转载分享,可能否注明出处?头文件#pragma once#include #inclu原创 2012-02-20 10:16:15 · 17945 阅读 · 11 评论 -
关于shared_ptr的释放
如果在某个类(如classA)中定义了智能指针shared_ptr,并且该指针指向了某对象资源,则该对象的释放工作将在classA的析构函数调用后自动进行,其实就是在销毁智能指针对象时销毁其指向的引用数为0的资源。调用shared_ptr的reset是不能释放所指资源的。shared_ptr有显式办法控制何时销毁自己和所指资源吗?原创 2012-02-21 21:11:09 · 15623 阅读 · 6 评论 -
提高Linux上socket性能---加速网络应用程序(转载)
原文地址:http://tech.c114.net/508/a242328.html在开发 socket 应用程序时,首要任务通常是确保可靠性并满足一些特定的需求。利用本文中给出的 4 个提示,您就可以从头开始为实现最佳性能来设计并开发 socket 程序。本文内容包括对于 Sockets API 的使用、两个可以提高性能的 socket 选项以及 GNU/Linux 优化。转载 2011-12-08 16:16:27 · 1573 阅读 · 0 评论 -
C++中调用R Language的类库(转载)
转自:http://www.shangxueba.com/jingyan/1825071.html一、 安装R,并下载R的源代码 点击下载R语言下载 官方安装版 安装R:从R的网站下载并运行R-2.10.1-win32.exe,记住安装路径如:C:\Program Files\R\R-2.15.2。 从R的网站下载R-2.15.2.tar.gz,转载 2015-01-05 17:25:38 · 1172 阅读 · 0 评论 -
解决vs2013 error C4308: 负整型常量转换为无符号类型问题(转载)
转自:http://blog.csdn.net/angle635/article/details/22035427前面在学习使用google的protobuf时在VS2012中一直无法编译编译通过,经过查找一些资料原来发现,并不是protobuf的问题,而是自己在使用VS2012时,没有完全了解VS2012的强大功能,和跟以前VS2010的差别,导致无法编译通过。转载 2015-03-31 18:59:53 · 5062 阅读 · 3 评论 -
如何查看dll附加依赖项(转载)
转自:http://www.cnblogs.com/wind-net/archive/2012/09/14/2685336.html开始->所有程序->Microsoft Visual Studio 2008 ->Visual Studio Tools->Visual Studio 2008 命令提示 1 d:\VS\VC>dumpbin 2 Microsoft (转载 2015-06-23 16:52:18 · 2171 阅读 · 0 评论 -
GDB调试命令(转载)
转自:https://www.cnblogs.com/cchust/p/5744273.html1.启动调试前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息。gdb program //最常用的用gdb启动程序,开始调试的方式gdb program core //用gdb查看core dump文件,跟踪程序core的...转载 2018-09-14 13:30:52 · 296 阅读 · 0 评论 -
boost编译libboost_python3
linux系统自带python2.7,boost编译后会生成libboost_python27.so,但有些应用需要libboost_python3,下面我们就来编译。进入boost源文件目录boost_1_67_0,配置仅仅编译python,python路径指向anaconda3中的python3.6。./bootstrap.sh --with-libraries=python --w...原创 2018-04-16 17:08:02 · 17908 阅读 · 9 评论 -
linux下armadillo安装,包括blas/openblas/atlas/lapack/arpack
首先下载armadillo:http://arma.sourceforge.net/download.html,我下载的是armadillo-8.400.0.tar.xz,将其解压:tar xf armadillo-8.400.0.tar.xz得到armadillo-8.400.0目录,按readme.txt说明安装,执行如下命令:cd armadillo-8.400.0.makemakesu...原创 2018-04-16 10:55:53 · 5102 阅读 · 0 评论 -
Linux下gdb调试用法命令(转载)
转自:http://blog.csdn.net/keith_bb/article/details/55216039一直在Fedora平台下写opencv的程序,需要对程序进行调试,主要用的调试工具是gdb. gdb提供了如下功能:1.在程序中设置断点,Debug时遇到断点处暂停2.可以监视某个变量,并利用print函数将该变量的值打印出来3.程序可step-by-step执行4.运行时修改变量的值...转载 2018-02-26 14:18:39 · 391 阅读 · 0 评论 -
linux下boost编译安装
1、从http://www.boost.org/下载boost安装包,目前最新的是boost_1_66_0.tar.gz2、解压压缩包$tar zxf boost_1_66_0.tar.gz3、进入解压的文件夹,设置相关参数,编译所有boost库$cd boost_1_66_0$./bootstrap.sh –with-libraries=all –with-toolset=gcc 4、编译bo原创 2018-01-17 13:29:02 · 1306 阅读 · 1 评论 -
Centos7找不到pyconfig.h
装的是python3.6,项目中用到boost相关代码,编译时找不到pyconfig.h。看了一下/usr/include/python3.6和/usr/include/python3.6m,都只有一个pyconfig-64.h文件。网上查了一圈,找了各种方法都搞不定,其中一种方法可以安装一堆.h进/usr/include/python2.7,3.6文件夹中还是没有。方法如下:1. 可以先原创 2018-01-15 13:56:10 · 8935 阅读 · 1 评论 -
linux环境下安装protobuf详解(转载)
转自:http://blog.csdn.net/BeautifulGrils/article/details/52775120一、Protocol Buffers概述:Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关转载 2018-01-11 17:25:41 · 10450 阅读 · 0 评论 -
vector和map的效率简要比较
项目中要对一些数据结构进行存取,而项目本身对时间延时比较敏感,在使用vector还是map上着实纠结了一番,主要某些数据量比较小,才有此纠结。而且想搞明白,到底大到什么数据量该用map?做了一些简单的测试,见下。首先,不管是vector还是map,请尽量存取指针,否则在存取时会有拷贝带来不必要的时间损失。通常用int和string做key的场景比较普遍(我的项目即如此),能用int原创 2017-07-17 14:43:35 · 21675 阅读 · 6 评论 -
vs2015打开VS2010的工程时,无法解析的外部符号 __imp___vsnprintf(转载)
http://bbs.csdn.NET/topics/391834105?page=1解决方案找到了。在vs2015工程选项,链接器附加依赖项里面添加legacy_stdio_definitions.lib即可。出现这个问题的原因是vs2015默认编译时将许多标准库采用内联方式处理,因而没有可以链接的标准库文件,所以要专门添加标准库文件来链接标准库中的函数。参考转载 2017-05-17 16:33:29 · 566 阅读 · 0 评论 -
JNI和C++调用dll效率比较
简单粗暴初略比较,dll里的函数超级简单int AddInt(int x, int y){ return x + y;}JNI调用和C++直接调用测试,均for循环1,000,000,000次 JNI调用耗时:6,000ms 6.0ns/次C++调用耗时:1,400ms 1.4ns/次单次的时间差应该体现了JNI调用dll的额外原创 2017-05-03 17:13:33 · 2431 阅读 · 0 评论 -
CUDA从入门到精通(转载)
CUDA从入门到精通(零):写在前面在老板的要求下,本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中,使处理程序加速超过1K,可见基于图形显示器的并行计算对于追求速度的应用来说无疑是一个理想的选择。还有不到一年毕业,怕是毕业后这些技术也就随毕业而去,准备这个暑假开辟一个CUDA专栏,从入门到精通,步步为营,顺便分享设计的一些经验教训,希望能转载 2017-02-08 10:24:57 · 940 阅读 · 0 评论 -
高效C++无锁队列实现(转载)
国外一牛人做的,支持多平台,支持多线程写、多线程读,并可指定读写token,转载过来。感觉作者也时刻维护着他这个项目,我提了一些问题,每次都会及时得到答复,而且回复得非常认真仔细,非常赞!链接地址(可下载源码):https://github.com/cameron314/concurrentqueue作者的测试效果统计:http://moodycamel.com/blog/20转载 2015-12-24 13:20:34 · 27165 阅读 · 6 评论 -
C++导出类,动态库需要__declspec(dllexport),静态库不需要
C++编写dll导出类,必须编译成动态库,不能编译成静态库原创 2014-09-04 16:13:12 · 11652 阅读 · 3 评论 -
一个轻量级网络通信开发库源码(转载)
原文地址:http://blog.csdn.net/visualwind/article/details/6088964一个网络通信开发库mnet,有兴趣的朋友可以下载看看。 封装了TCP和UDP的socket函数,封装了完成端口、WSAEventSelect、select等3种winsock I/O模型,并结合线程池+内存池模式,支持高并发。 使用的是转载 2011-11-29 14:52:03 · 1353 阅读 · 1 评论 -
使用Boost.Asio编写通信程序(转载)
原文地址:http://cpp.ezbty.org/content/science_doc/%E4%BD%BF%E7%94%A8boostasio%E7%BC%96%E5%86%99%E9%80%9A%E4%BF%A1%E7%A8%8B%E5%BA%8F摘要:本文通过形像而活泼的语言简单地介绍了Boost::asio库的使用,作为asio的一个入门介绍是非常合适的,可以给人一种新鲜转载 2011-11-17 18:15:09 · 1068 阅读 · 0 评论 -
理解套间(涉及进程、线程、COM线程模型)(转载)
简序大学毕业前的最后一学期,在一家公司实习,当时的工作需要用到一些操作系统提供的组件。那时候只知道COM这个名词,并不知道到底是怎么回事,只知道上网到处找别人的源码解决自己的问题;那段日子到现在回忆起来都是灰色的,每天呆坐在电脑前,一个网站一个网站的查找自己需要的源码。但并不清楚自己到底在做什么;那时候对自己能不能成为一个程序员充满了怀疑。在实习结束返校的火车上,一夜间,我把一本《COM本质原创 2009-03-03 16:43:00 · 1681 阅读 · 1 评论 -
ATL揭秘之“对象创建”篇(转载)
1 问题 当我们用VC++ ATL工程创建了一个COM工程,实现了一个自己的COM对象,又在另一个程序中CoCreateInstance这个COM对象时,不知你是否想过这样的问题:COM对象是用C++类对象实现的,但是,我们从来没有在自己的代码中创建这些C++类对象——比如,“new”这些对象。那么,实现COM对象的C++对象是由谁,何时,以及如何创建的呢?当然转载 2009-03-03 15:17:00 · 855 阅读 · 0 评论 -
二维数组new小结(转载)
1. A (*ga)[n] = new A[m][n]; ... delete []ga;缺点:n必须是已知优点:调用直观,连续储存,程序简洁(经过测试,析构函数能正确调用)2. A** ga = new A*[m]; for(int i = 0; i ga[i] = new A[n]; ... for(int i = 0; i转载 2006-08-22 12:38:00 · 1193 阅读 · 0 评论 -
通过汇编代码看引用和指针的区别
int main(int argc, char* argv[]){ int data = 10; int &rData = data; int *pData = &data; int addr; addr = (int)&rData; addr = (int)&pData; return 0;} 汇编代码_data$ = -4_rData$ = -8_pData$ = -12原创 2006-08-17 15:47:00 · 1947 阅读 · 0 评论 -
如何注册系统热键
使用函数RegisterHotKey,其原型为:BOOL RegisterHotKey( HWND hWnd, int id, UINT fsModifiers, UINT vk);ParametershWnd [in] Handle to the window that will receive WM_HOTKEY messages原创 2006-08-03 14:44:00 · 1145 阅读 · 0 评论