
C/C++
文章平均质量分 52
cuijinquan
这个作者很懒,什么都没留下…
展开
-
采用C++的ACE库实现的一个通用的C/S架构通信程序(最终版)
ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework),在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++ Wrapper Facade(包装外观)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间转载 2013-10-29 19:59:56 · 601 阅读 · 1 评论 -
编译freetype-2.5.0.1时出现以下错误libbz2.a错误
环境:ubuntu 12.04 x64一.问题编译freetype-2.5.0.1时出现以下错误 /usr/bin/ld: /usr/local/lib/libbz2.a(bzlib.o): relocation R_X86_64_32S against `.text' can not be used when making a shared object; recompile w原创 2013-10-30 01:01:20 · 1690 阅读 · 1 评论 -
关于LinuxC/C++中字符指针char * str 与字符数组 char str []的一点小区别
在C/C++中字符指针和字符数组都可以用来存储字符串,从这方面来说他们是相同的。但是有些细节东西是不同的。就是对于他们重新赋值改变上。例如,char * str="123456";char str1[]="123456";不同点 1:改变字符串中的某个值 在字符指针中,不能利用下标改变其中的某个值。比如想要该面char * s转载 2013-10-29 19:58:02 · 642 阅读 · 0 评论 -
mdk开源服务器引擎(更新V1.67 2013.10.29)
起因我这个人有一个不好的习惯——作为一个Coder就是不喜欢读代码在我的意识里,一个好的代码库应该是足够稳定的,稳定到不需要使用者为了解决问题而去读里面的代码。当然出于学习等目的,读代码是不可避免的所以我总希望能有一个轻量,轻量,再轻量的开发库就好了,于是萌生了开发一个微量级服务器引擎的想法,于是mdk(Micro-Development-Kit)微量级开发工具包,就是这套框加转载 2013-10-29 20:01:54 · 953 阅读 · 0 评论 -
编译libiconv-1.14
libiconv除提供对西欧字符集的支持外,libiconv库还提供了对各种亚洲字符集(包括汉字、日文、韩文)的支持 下载:http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz一.问题1. 遇到错误说make找不到autoconf-2.68相关命令,解决:进入 http://ftp.gnu.org/gnu/原创 2013-10-30 14:02:12 · 916 阅读 · 0 评论 -
gnutls
GnuTLS README -- Important introductory notes.Copyright (C) 2000-2012 Free Software Foundation, Inc.See the end of this document for copying conditions.GnuTLS implements the TLS/SSL (Transpo原创 2013-10-30 19:19:43 · 1768 阅读 · 0 评论 -
编译libtheora-1.1.1
一.安装依赖库: sudo apt-get install libogg-dev二. ./autogen.sh三../configure --enable-static=yes四.make &sudo make install原创 2013-10-30 14:20:28 · 1207 阅读 · 0 评论 -
编译fontconfig-2.10.95
一../configure --enable-staitc=yes二.make三sudo make install原创 2013-10-30 14:24:41 · 2354 阅读 · 5 评论 -
编译ffmpeg
./configure --disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-原创 2013-10-31 02:06:13 · 647 阅读 · 1 评论 -
编译vid.stab-20130830-git-869f3bb
一. cmake ./src make sudo make install原创 2013-10-31 02:08:11 · 859 阅读 · 0 评论 -
http://git.oschina.net/bbcallen/ijkplayer
http://git.oschina.net/bbcallen/ijkplayer原创 2013-10-31 02:08:24 · 1318 阅读 · 0 评论 -
yasm
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gztar zxf yasm-1.2.0.tar.gzcd yasm-1.2.0./configuremakemake install原创 2013-10-30 18:06:54 · 1062 阅读 · 0 评论 -
C语言编程需要注意的64位和32机器的区别
C语言编程需要注意的64位和32机器的区别 一、数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较:16位平台char 1个字节8位short 2个字节16位int 2个字节16位long转载 2013-11-02 12:46:03 · 641 阅读 · 0 评论 -
OpenLDAP学习笔记
OpenLDAP学习笔记整理:Jims of 肥肥世家jims.yang@gmail.com>Copyright © 2004,2005, 本文遵从GNU 的自由文档许可证(Free Document License)的条款,欢迎转载、修改、散布。发布时间:2004年04月07日最近更新:2005年08月08日转载 2013-11-05 00:04:51 · 507 阅读 · 0 评论 -
编译安装lua
编译安装luaLua 是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用原创 2013-11-04 17:57:38 · 492 阅读 · 0 评论 -
编译安装openldap
一.git clone git://git.openldap.org/openldap.gitcd openldap./configure --prefix=/usr/local/openldap --sysconfdir=/etc --enable-ldbm --enable-lmpasswd --enable-spasswd --enable-bdb --enable-ldap原创 2013-11-04 17:04:51 · 697 阅读 · 0 评论 -
编译libX11-dev
一.下载git://anongit.freedesktop.org/git/xorg/lib/libX11 或 http://packages.debian.org/unstable/libdevel/libx11-dev编译: $ ./autogen.sh ./configure --enable-unix-原创 2013-11-04 23:35:22 · 6799 阅读 · 1 评论 -
IO重定向
Linux Shell 环境中支持输入输出重定向,用符号来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输 入或输出,比如 2>a.txt 表示将错误信息输出到文件a.txt中。同时,还可以在这三个标准输入输出之间实现重定向,比如将错误信息重定向到标准输出,可以用 2>&1来实现。Linux下还有一个特殊的文件/dev/null,它就像一转载 2013-11-19 22:36:01 · 484 阅读 · 0 评论 -
C语言编译全过程
C语言编译全过程 编译的概念:编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。 编译的完整过程:C源程序-->预编译处理(.c)-->编译、优化程序(.s、.asm)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf转载 2013-11-19 22:17:49 · 361 阅读 · 0 评论 -
C++网络库总结
ACE - Adaptive Communication Environment http://www.cs.wustl.edu/~schmidt/ACE.htmlCommon G++ (GNU) Home or Socket Class ReferenceSocket++ version 1.11 http://www.cs.utexas.edu/users/lavender/courses转载 2013-11-07 03:55:04 · 634 阅读 · 0 评论 -
红黑树及C语言实现
红黑树与C语言查找算法 红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由Rudolf Bayer发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它转载 2013-11-07 04:05:38 · 734 阅读 · 0 评论 -
一个通用的udp收发模块(类)——针对linux或QT环境
概述udp收发包也是我们工程中经常用到的东西。不同的平台有不同的socket函数和接口。每次编写程序的时候还要重新写这些东西,非常繁琐。所以考虑能不能写一些公用代码来简化这部分操作。主要针对的开发环境:我平时面对的开发环境主要是这几种;1) QT平台众所周知,QT是跨平台的,所以如果开发环境有安装QT的话,一套代码就能全搞定了。QT处理u转载 2013-11-12 17:37:59 · 694 阅读 · 0 评论 -
一种C++消息队列构造方法(二)——网络消息队列的构造(udp)
前言:之前的文章中讨论过一种消息队列的构造思想,也就是把它当做一种信箱。当时把消息队列分为两种: 本地消息队列(信箱)和网络消息队列(信箱) 当时的代码只完成了本地消息队列。本文着重讨论一下网络消息队列 相关文章:一个通用的udp收发模块(类)——针对linux或QT环境http://blog.sina.com.cn/s/blog_4转载 2013-11-12 17:38:56 · 758 阅读 · 0 评论 -
一种C++消息队列构造方法
概述本文阐述的是一种通用的消息队列的构造方法消息队列是程序开发中常用的数据结构。 在多线程开发中尤其普遍。消息队列的原理我觉得和邮件或者快递很相似: 构造一封信(消息体)-> 把信装入信封(消息体打包)->发送给接受者的信箱。 当消息体比较大的时候,往往先分配好内存,然后在信中告诉接收方内存地址,让接收者去取。 内存的申请可以在堆上,也可以在内存池上。转载 2013-11-12 17:37:06 · 596 阅读 · 0 评论 -
C语言堆栈入门 —— 堆和栈的区别
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教转载 2013-11-30 16:14:33 · 471 阅读 · 0 评论 -
FFMPEG 库移植到 VC 需要的步骤
在VC下使用FFMPEG编译好的库,不仅仅是把.h,.lib,.dll拷贝到工程中就行了,还需要做以下几步。(此方法适用于自己使用MinGW编译的库,也同样适用于从网上下载的编译好的库,例如http://ffmpeg.zeranoe.com/builds/)。(1)像其他额外库一样,设置VC的Include路径为你c:\msys\local\include,设置VClib路径为次c:\ms转载 2013-11-30 17:21:52 · 432 阅读 · 0 评论 -
一些VC的快捷键以及调试技巧
1.检测程序中的括号是否匹配 把光标移动到需要检测的括号(如大括号{}、方括号[]、圆括号()和尖括号 2.查看一个宏(或变量、函数)的宏定义 把光标移动到你想知道的一个宏上,就比如说最常见的DECLARE_MAP_MESSAGE上按一下F12(或右键菜单中的Go To Defition Of …),如果没有建立Browse files,会出现提示对话框,确定转载 2013-11-30 17:21:16 · 366 阅读 · 0 评论 -
EncodeHD is built in Visual Studio 2010 (VB.NET) so
Just a few notes about the source to start with. EncodeHD is built in Visual Studio 2010 (VB.NET) so you'll need this to open the project.The binaries for EncodeHD are not included and should be tak转载 2013-12-09 12:47:29 · 548 阅读 · 0 评论 -
C语言经典题目及解题思路
本来是想写个《C语言经典题目系列》,本系列包括一些经典算法题目,但由于时间问题,现在只是收集了不多题目且只做了一部分,就先发上来了。写此目的帮助一些学c语言的人入门及运用一些算法,由于水平有限错误在所难免及本来这些题目不是很难高手就不用看了,其中错误欢迎大家指正。1、【问题描述】梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编写一个程序,计算共有多少中不同的走法【思路】看到此题目容易转载 2013-12-13 18:28:55 · 1314 阅读 · 0 评论 -
Boost智能指针——scoped_ptr
Boost智能指针——scoped_ptrboost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:#include #include #include class implementation{public: ~im转载 2013-12-28 13:45:13 · 380 阅读 · 0 评论 -
Boost智能指针——shared_ptr
Boost智能指针——shared_ptrboost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include #include #include class转载 2013-12-28 13:45:58 · 487 阅读 · 0 评论 -
Boost智能指针——weak_ptr
Boost智能指针——weak_ptr循环引用:引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象。一个简单的例子如下:#include #include #include #include class parent;class children;typedef boost::shared_ptr parent_转载 2013-12-28 13:51:22 · 390 阅读 · 0 评论 -
boost.circular_buffer简介
boost.circular_buffer简介很多时候,我们需要在内存中记录最近一段时间的数据,如操作记录等。由于这部分数据记录在内存中,因此并不能无限递增,一般有容量限制,超过后就将最开始的数据移除掉。在stl中并没有这样的数据结构,一般需要我们自己构造,常用方法如下:用list构造,超过后把数据头移除用vector构造,超过后把数据头移除用数组构造,通过转载 2013-12-28 14:00:27 · 499 阅读 · 0 评论 -
用boost.signal实现多播委托
用boost.signal实现多播委托使用boost.signalboost.signal提供了一个多播委托机制,通过它可以非常容易的实现观察者模式: void print_sum(float x, float y) { std::cout "The sum is " x+y } void print_product(转载 2013-12-28 14:04:38 · 435 阅读 · 0 评论 -
Linux编程基础——Socket编程
Linux编程基础——Socket编程Linux下的Socket编程大体上包括Tcp Socket、Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较多的,而Raw Socket则用得相对较少,不在本文介绍范围之列。TCP Socket基于TCP协议的客户端/服务器程序的一般流程一般如下:转载 2013-12-28 15:20:52 · 398 阅读 · 0 评论 -
Linux编程基础——信号
Linux编程基础——信号基本概念信号在Linux中是一个比较常见的概念,例如我们按Ctrl+C中断前台进程,通过Kill命令结束进程都是通过信号实现的。下面就以Ctrl+C为例简单的说明信号的处理流程:用户按下Ctrl-C,这个键盘输入产生一个硬件中断。该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。终端驱动程序将Ctrl-C解释转载 2013-12-28 15:21:36 · 366 阅读 · 0 评论 -
通过重载new和delete实现简单的对象池
通过重载new和delete实现简单的对象池对象池的用途在这里就不介绍了,本例中只是其一个简单的实现。#include #include using namespace std;templateclass T>class object_pool{ listvoid *> data_list;public: void* malloc_dat转载 2013-12-28 15:42:39 · 459 阅读 · 0 评论 -
链表C++实现
链表C++实现 1 #include assert.h> 2 3 templatetypename T> 4 class CNode 5 { 6 public: 7 T data; 8 CNodeT> *next; 9 CNode():data(T()),next(NULL) 10 { 1转载 2013-12-29 00:39:06 · 418 阅读 · 0 评论 -
控制linux动态链接库(so, standard object)导出函数
参考:http://www.lampchina.net/article/htmls/201006/Mjg4MDMy.html注意:参考文献中有一些函数是不能编译通过的。编译环境:gcc 4.4.3在windows中,我们可以指定__declspec(dllexport)定义来控制导出函数,在linux下,我们也有类似的控制参数。在GCC帮助文档 -fvisibili转载 2013-12-16 21:27:13 · 552 阅读 · 0 评论 -
VC++下命名管道编程的原理及实现
概述管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。命名管道(Named Pipes)是在管道服务器和一台或多台管道客户机之间进行单向或双向通信的一种命名的管道。一个命名管道的所有实例共享同一个管道名,但是每一个实例均拥有独立的缓存与句柄,并且为客户——服务通信提供有一个分离的管道。实例的使用保证了多个管道客户能够在同一时转载 2013-12-31 14:42:42 · 544 阅读 · 0 评论