win32汇编 罗云彬如何调用C++类库

教你看懂C++类库函数定义之三---_stdcall
一切从一个C++ 类库头文件开始,现在在做一个C++的项目,期间用到一个开源的界面库DUILib(类似MFC),这个东西还不错能很容易的写出漂亮的界面,比如QQ的界面,可以去下来研究研究,地址:/p/duilib/
废话不多说,我比较困扰的是UIWebBrowser.h这个头文件,虽然是C++写的,但里面包含太多大学C++课本以外的东西,第一遍看下来跟看天书一样,里面有很多的不惑,接下来我们一个一个解开。
首先看一下这个函数定义:
virtual HERSULT STDMETHODCALLTYPE GetTypeInfoCount( __RPC__out UINT *pctinfo);
这一篇详细介绍 &__stdcall
上篇文章我们知道#define STDMETHODCALLTYPE __stdcall ,那__stdcall又是个什么东东呢,有什么作用呢?下面来完全的了解一下.
1. _cdecl &
(1). 是C Declaration的缩写,表示C语言默认的函数调用方法,实际上也是C++的默认的函
数调用方法。&
(2). 所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。具体所示:调用
方的函数调用-&被调用函数的执行-&被调用函数的结果返回-&调用方清除调整堆栈。 (3). 被调用函数无需要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全
不同的参数都不会产生编译阶段的错误。总的来说函数的参数个数可变的(就像printf函数一样),因为只有调用者才知道它传给被调用函数几个参数,才能在调用结束时适当地调整堆栈。&
(4). 因为每个调用的地方都需要生成一段调整堆栈的代码,所以最后生成的文件较大。 &
2. _stdcall(CALLBACK/WINAPI)&
(1). 是Standard Call的缩写,要想函数按照此调用方式必须在函数名加入_stdcall,通常_&
win32 api 应该是_stdcall调用规则。通过VC++编写的DLL欲被其他语言编写的程序调用,应将函数的调用方式声明为_stdcall 方式,WINAPI都采用这种方式。&
(2). 所有参数从右到左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针。具体所示:调用方的函数调用-&被调用函数的执行-& 被调用方清除调整堆栈-&被调用函数的结果返回。&
(3). 这些堆栈中的参数由被调用的函数在返回后清除,使用的指令是 retn X,X表示参数占用的字节数,CPU在ret之后自动弹出X个字节的堆栈空间。称为自动清栈。 (4). 函数在编译的时候就必须确定参数个数,并且调用者必须严格的控制参数的生成,不能
多,不能少,否则返回后会出错。总的来说,就是函数的参数个数不能是可变的。是从 _cdecl 修改而来, _stdcall 不支持可变参数,并且清栈由被调用者负责,其他的都一样 (5). 因为只需在被调用函数的地方生成一段调整堆栈的代码,所以最后生成的文件较小。 &
3. PASCAL 是Pascal语言的函数调用方式,也可以在C/C++中使用,参数压栈顺序与前两者相反。返回时的清栈方式忘记了。。。 &
4. _fastcall 是编译器指定的快速调用方式。由于大多数的函数参数个数很少,使用堆栈传
递比较费时。因此_fastcall通常规定将前两个(或若干个)参数由寄存器传递,其余参数还是通过堆栈传递。不同编译器编译的程序规定的寄存器不同。返回方式和_stdcall相当。 &
5. _thiscall 是为了解决类成员调用中this指针传递而规定的。_thiscall要求把this指针放
在特定寄存器中,该寄存器由编译器决定。VC使用ecx,Borland的C++编译器使用eax。返回方式和_stdcall相当。 &
6. _fastcall 和 _thiscall涉及的寄存器由编译器决定,因此不能用作跨编译器的接口。所以
Windows上的COM对象接口都定义为_stdcall调用方式。 &
7. C中不加说明默认函数为_cdecl方式(C中也只能用这种方式),C++也一样,但是默认
的调用方式可以在IDE环境中设置。 &
8. 带有可变参数的函数必须且只能使用_cdecl方式,例如下面的函数:&
int printf(char * fmtStr, ...);&
int scanf(char * fmtStr, ...); 9. 函数名修饰&
(1). _cdecl :对于_cdecl而言,如果对于定义在C程序文件(编译器会通过后缀名为.C判断)
的输出函数,函数名会保持原样;对于定义在C++程序文件中的输出函数,函数名会被修饰(见10)。为使函数名不被修饰,有两种方法:A.可通过在前面加上extern &c&以去除函数名修饰;B. 可通过.def文件去除函数名修饰。 (2). _stdcall:无论是C程序文件中的输出函数还是C++程序文件中的输出函数,函数名都会
被修饰。对于定义在C++程序文件中的输出函数,好像更复杂,和_cdecl的情况类似。去除函数名修饰方法:只能通过.def文件去除函数名修饰。 10. 函数名修饰规则: (1). 为什么要函数名修饰:&
&函数名修饰就是编译器在编译期间创建的一个字符串,用来指明函数的定义和原型。
LINK程序或其他工具有时需要指定函数的名字修饰来定位函数的正确位置。多少情况下程序员并不需要知道函数的名字修饰,LINK程序或其他工具会自动区分他们。当然,在某些情况下需要指定函数名修饰,例如在c++程序中,为了让LINK程序或其他工具能够匹配到正确的函数名字,就必须为重载函数后一些特殊函数(如构造函数和析构函数)指定名字修饰。另一种需要指定函数名修饰的情况是在汇序中调用C或C++函数。 (2). C语言:&
&对于_stdcall调用约定,编译器和链接器会在输出函数名前加上一个下划线前缀,函数
名后面加上一个&@&符号和其参数的字节数,例如_functionname@number。_cdecl调用约定仅在输出函数名前加上一个下划线前缀,例如_functionname。_fastcall调用约定在输出函数名前加上一个 &@&符号,后面也是一个&@&符号和其参数的字节数,例如@functionname@number。 (3). C++语言:&
& &C++的函数名修饰规则有些复杂,但是信息更充分,通过分析修饰名不仅能够知道函数的调用方式,返回值类型,参数个数甚至参数类型。不管__cdecl,__fastcall还是__stdcall调用方式,函数修饰都是以一个&?&开始,后面紧跟函数的名字,再后面是参数表的开始标识和按照参数类型代号拼出的参数表。对于__stdcall方式,参数表的开始标识是&@@YG&,对于__cdecl方式则是&@@YA&,对于__fastcall方式则是&@@YI&。参数表的拼写代号如下所示: X--void & & D--char & &&
E--unsigned char & & F--short & & H--int & &&
I--unsigned int & & J--long & &&
K--unsigned long(DWORD) M--float & & N--double & & _N&bool U&struct ....&
指针的方式有些特别,用PA表示指针,用PB表示const类型的指针。后面的代号表明指针类型,如果相同类型的指针连续出现,以&0&代替,一个&0&代表一次重复。U表示结构类型,通常后跟结构体的类型名,用&@@&表示结构类型名的结束。函数的返回值不作特殊处理,它的描述方式和函数参数一样,紧跟着参数表的开始标志,也就是说,函数参数表的第一项实际上是表示函数的返回值类型。参数表后以&@Z&标识整个名字的结束,如果该函数无参数,则以&Z&标识结束。下面举两个例子,假如有以下函数声明:&
int Function1(char *var1,unsigned long);&
其函数修饰名为&?Function1@@YGHPADK@Z&,而对于函数声明: oid Function2();&
其函数修饰名则为&?Function2@@YGXXZ& 。 &
对于C++的类成员函数(其调用方式是thiscall),函数的名字修饰与非成员的C++函数稍有不同,首先就是在函数名字和参数表之间插入以&@&字符引导的类名;其次是参数表的开始标识不同,公有(public)成员函数的标识是&@@QAE&,保护(protected)成员函数的标识是&@@IAE&,私有(private)成员函数的标识是&@@AAE&,如果函数声明使用了const关键字,则相应的标识应分别为&@@QBE&,&@@IBE&和&@@ABE&。如果参数类型是类实例的引用,则使用&AAV1&,对于const类型的引用,则使用&ABV1&。 11. 查看函数的名字修饰&
&有两种方式可以检查你的程序中的函数的名字修饰:使用编译输出列表或使用Dumpbin工具。使用/FAc,/FAs或/FAcs命令行参数可以让编译器输出函数或变量名字列表。使用dumpbin.exe /SYMBOLS命令也可以获得obj文件或lib文件中的函数或变量名字列表。此外,还可以使用 undname.exe 将修饰名转换为未修饰形式。&
12. _beginthread需要_cdecl的线程函数地址,_beginthreadex和_CreateThread需要_stdcall
的线程函数地址。&
13. #define CALLBACK __stdcall //这就是传说中的回调函数&
#define WINAPI __stdcall //这就是传说中的WINAPI #define WINAPIV __cdecl&
#define APIENTRY WINAPI //DllMain的入口就在这里 #define APIPRIVATE __stdcall #define PASCAL __stdcall&
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。win32汇编 掌握C++_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
文档贡献者贡献于
评价文档:
26页免费20页免费6页免费3页¥2.005页免费13页免费5页免费4页免费3页免费2页免费
喜欢此文档的还喜欢60页免费23页免费19页免费196页2下载券15页免费
win32汇编 掌握C++|w​i​n​ 2​汇​编​部​分​学​习​资​料​共​享​,​免​费​下​载​。
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
大小:106.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢c、c++、java标准类库+mfc类库详解+Win32API大全 中文版 - 下载频道
- CSDN.NET
&&&&c、c++、java标准类库+mfc类库详解+Win32API大全 中文版
c、c++、java标准类库+mfc类库详解+Win32API大全 中文版
c与c++标准类库及函数.chm
java函数查询.chm
MFC类库详解.chm
Win32API大全+(中文版).chm
C/C++ 语言参考
预处理命令
操作符优先级
基本数据类型
标准 C 库:
Standard C I/O
Standard C String & Character
Standard C Math
Standard C Time & Date
Standard C Memory
Other standard C functions
C++ Strings
C++ 标准模板库
C++ Bitsets
C++ Double-Ended Queues
C++ Multimaps
C++ Multisets
C++ Priority Queues
C++ Queues
C++ Stacks
C++ Vectors
新编Win32API大全:
作为 Microsoft 32位平台(包括:Windows 9x,Windows NT3.1/4.0/5.0,WindowsCE)的应用程序编程接口,它是构筑所有32位Windows平台的基石,所有在Windows平台上运行的应用程序都可以调用这些函数。从事Windows应用程序开发,离不开对Win32 API函数的调用。只有充分理解和利用API函数,才能深入到Windows的内部,充分挖掘系统提供的强大功能和灵活性。
新编 WIN 32API 大全
第一章 Win32 API 概论
第二章 窗口管理函数
第三章 国际特性函数
第四章 图形设备接口函数
第五章 网络服务函数
第六章 系统服务函数
MFC类库详解:
该MFC参考含盖了Microsoft基本类库中的类、全局函数、全局变量和宏的内容。
参考中“类层次结构图”是为了方便查找某个类的基类。
该MFC参考通常不描述通过继承的函数或操作符。若要寻求这些函数的信息,请参阅类层次结构图中该类的基类信息。
每个类的说明文档包括:该类的概括、类成员的种类、以及该成员函数、重载操作符或数据成员的基本用途。
仅撰写应用程序或派生类在一般情况下对于公共和保护类成员的使用说明。
寻求完整的类成员的列表,请参阅该类的头文件。
本书目录 · 层次结构图 直观的描述MFC中各类的关系。
· MFC类 详细解说MFC库中的每个类和头文件信息。
· MFC宏和全局 详细解说MFC库中的每个宏、全局函数、全局变量。
· 结构、风格、回调函数和消息映射 详细解说MFC库中的各个结构、风格、回调函数和消息映射。
Java函数速查
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
(@_@)(@_@)(@_@)(@_@)
空间积分0 信誉积分105 UID阅读权限20积分319帖子精华可用积分319 专家积分21 在线时间20 小时注册时间最后登录
稍有积蓄, 积分 319, 距离下一级还需 181 积分
帖子主题精华可用积分319 专家积分21 在线时间20 小时注册时间最后登录
论坛徽章:0
很多公司都有自己的一套公共类库,但现在如果没有,想找一些现成的,已经封装好一些基本的库,例如thread,socket,xml等等
想在ACE基础上开发,但想知道有没有其他一些比较常用的?
GNU Common C++可惜是GPL的
不知道一般公司是怎么整的?都是自己写?
见下面转的一些类库介绍,看来还是这几个啊。见5楼、6楼
[ 本帖最后由 M.I.X 于
21:03 编辑 ]
每天慢跑30分钟
每天做120个俯卧撑
睡觉睡到手抽筋,数钱数到自然醒!
screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
空间积分0 信誉积分401 UID44767阅读权限100积分14923帖子精华可用积分14923 专家积分275 在线时间4141 小时注册时间最后登录
帖子主题精华可用积分14923 专家积分275 在线时间4141 小时注册时间最后登录
论坛徽章:1
BOOST,LOKI?
空间积分0 信誉积分132 UID阅读权限50积分3097帖子精华可用积分3097 专家积分91 在线时间20 小时注册时间最后登录
小富即安, 积分 3097, 距离下一级还需 1903 积分
帖子主题精华可用积分3097 专家积分91 在线时间20 小时注册时间最后登录
论坛徽章:0
强烈要求日本将琉球群岛归还中国!!!
还我琉球省!!!
构造完美代码
追究精致境界
反对随意修补
鄙视破坏和谐
空间积分0 信誉积分0 UID阅读权限10积分7帖子精华可用积分7 专家积分0 在线时间4 小时注册时间最后登录
白手起家, 积分 7, 距离下一级还需 193 积分
帖子主题精华可用积分7 专家积分0 在线时间4 小时注册时间最后登录
论坛徽章:0
链接库问题
gcc -o test test2.c -ldl -pthread
上面的 -ldl谁能详细解释下 什么库??
(@_@)(@_@)(@_@)(@_@)
空间积分0 信誉积分105 UID阅读权限20积分319帖子精华可用积分319 专家积分21 在线时间20 小时注册时间最后登录
稍有积蓄, 积分 319, 距离下一级还需 181 积分
帖子主题精华可用积分319 专家积分21 在线时间20 小时注册时间最后登录
论坛徽章:0
c++开源跨平台类库
在如下的库支持下,开发的系统可以很方便移植到当前大部分平台上运行
而无需改动,只需在对应的平台下 用你喜欢的编译器 重新编译即可
经典的C++库
& &STLport-------SGI STL库的跨平台可移植版本,在以前有些编译器离符合
& && && &标准比较远的情况下 那时还是有用的,当然目前vc71已经比较接近标准了,
& && && &故目前不怎么用它了。
& &Boost---------准标准库, 功能强大 涉及能想的到的大部分非特别领域的算法,
& && && &有一个大的C++社区支持
& &WxWindows-----功能强大的跨平台GUI库&&,它的功能和结构都类似 MFC,故原则上
& && &可以通过WxWindows把现有MFC程序移植到非Win平台下
& &Blitz---------高效率的数值计算函数库 ,你可以订制补充你需要的算法
& &Log4cpp-------日志处理&&,功能类似java中的log4j
& &ACE-----------自适应通讯环境, 重量级的通讯环境库。
& &Crypto++ -----加/解密算法库, 非常专业的C++ 密码学函式库
& &CppUnit&&---&&一个c++的单元测试框架&&类似 java&&的JUnit
& &Loki -------&&一个实验性质的库,尝试把类似设计模式这样思想层面的东西通过
& && &&&库来提供,他是C++的一个模板库,系C++&贵族&, 它把C++模板的功能发挥到了极致
学术性的C++库:
& &FC++ --------The Functional C++ Library&&,用库来扩充语言的一个代表作 ,模板库
& &CGAL ------- Computational Geometry Algorithms Library计算几何方面的大部分重要的
& &&&解决方案和方法以C++库的形式提供给工业和学术界的用户。
其它目前我感觉还不是很爽的C++库:
& &Doxygen&&----注释文档生成工具 ,可恨的是 我找不到 windows版本
& &QT ----------大名顶顶的一个多平台的C++图形用户界面应用程序框架(GUI库)
& && && & 可气的是他的 Windows版 是商业发布的要付费
& &xml4c--------IBM开发的XML Parser,系超重量级的, 适用大型应用中, 其DLL有 12M,恐怖吧
& &Xerces c++ --Apache的XML项目, 但 只支持少数的字符编码,如ASCII,UTF-8,UTF-16等,
& && && &&&不能处理包含中文字符的XML文档
& &XMLBooster -----&&也是一种&&XML的 解析工具
& &Fox& &-------又一种开放源代码(C++)的GUI库,功能不是很强
C++开发环境(Win平台下除了 Visual C++ 和 Borland C++以外的):
& &Cygwin&&--------Windows下的一个Unix仿真环境
& &MinGW& &--------GCC的一个Windows移植版本
& &Dev C++ -------- 一个C/C++ 的集成开发环境,在Windows上的C++编译器一直和标准有着一
& && &&&段距离的时候,GCC就是一个让Windows下开发者流口水的编译器。
& &Eclipse-CDT&&----IMB 开发的一个集成开发环境,一般用来作为Java 开发环境,但由于
& && && &Eclipse 是通过插件体系来扩展功能,这里我们 安装 CDT插件后,就可以用来作为
& && && &C++ 的集成开发环境
-----------------------------------------------------------------------------------------
经典的C++库
-----------------------------------------------------------------------------------------
以下以 vc71环境 为例,其他环境 见各软件包的说明文档。
1.&&STLport (SGI STL库的跨平台可移植版本。)
& & -------
vc71环境中编译安装
版本:STLport-4.6.2.tar.gz
copy vc71.mak makefile
nmake clean all
头文件在 %STLport_root%/include\stlport
库文件在 %STLport_root%/lib
头文件添加方法如:
#i nclude& &需要链接lib库
2&&WxWindows&&(跨平台的GUI库)
& && & --------
& && & --------
& && & --------
&&因为其类层次极像MFC,所以有文章介绍从MFC到WxWindows的代码移植以实现跨平台的功能。
通过多年的开发也是一个日趋完善的GUI库,支持同样不弱于前面两个库。并且是完全开放源代码的。新近
的C++ Builder X的GUI设计器就是基于这个库的。
vc71环境中编译安装
&&版本:wxMSW-2.6.0-Setup.exe
&&copy makefile.vc makefile
&&通过 配置 config.vc 的 SHARED = 0 和 BUILD = debug
&&确定 nmake clean all 的四种编译结果:
include头文件: include\wx
Lib库文件:&&lib\vc_dll&&和 lib\vc_lib
DLL: lib\vc_dll
头文件在 %wxWidgets_root%/include\wx
库文件在 %wxWidgets_root%/lib\vc_dll&&和 %wxWidgets_root%/lib\vc_lib
头文件添加方法如:
#i nclude& &需要链接lib库
3& &boost&&(“准”标准库)
& & Boost库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程
的发动机之一。 Boost库由C++标准委员会库工作组成员发起,在C++社区中影响甚大,其成员已近2000人
。 Boost库为我们带来了最新、最酷、最实用的技术,是不折不扣的“准”标准库。
vc71环境中编译安装
&&版本:boost_1_32_0.exe
首先进入 tools\build\jam_src 运行 build.bat&&得到一个工具: bjam.exe
将其复制到 boost_root 目录下
执行 bjam &-sTOOLS=vc-7_1& stage 开始编译&&(bjam &-sTOOLS=vc-7_1& install)
头文件在 %boost_root%/boost
库文件在 %boost_root%/stage\lib
头文件添加方法如:
#i nclude& &有时要链接lib库
Boost中比较有名气的有这么几个库:
正则表达式库
LL parser framework,用C++代码直接表达EBNF
图组件和算法
在调用的地方定义短小匿名的函数对象,很实用的functional功能
concept check
检查泛型编程中的concept
用模板实现的元编程框架
可移植的C++多线程库
把C++类和函数映射到Python之中
内存池管理
& & 5个智能指针,学习智能指针必读,一份不错的参考是来自CUJ的文章:
Smart Pointers in Boost,哦,这篇文章可以查到,CUJ是提供在线浏览的。
& & Boost总体来说是实用价值很高,质量很高的库。并且由于其对跨平台的强调,对标准C++的
强调,是编写平台无关,现代C++的开发者必备的工具。但是Boost中也有很多是实验性质的东西,
在实际的开发中实用需要谨慎。并且很多Boost中的库功能堪称对语言功能的扩展,其构造用尽精
巧的手法,不要贸然的花费时间研读。Boost另外一面,比如Graph这样的库则是具有工业强度,
结构良好,非常值得研读的精品代码,并且也可以放心的在产品代码中多多利用。
3& &blitz&&(高效率的数值计算函数库)
Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像C++ 一样方便,同时
又比Fortran速度更快的数值计算环境。通常,用C++所写出的数值程序,比 Fortran慢20%左右,因
此Blitz++正是要改掉这个缺点。方法是利用C++的template技术,程序执行甚至可以比Fortran更快。
Blitz++目前仍在发展中,对于常见的SVD,FFTs,QMRES等常见的线性代数方法并不提供,不过使用
者可以很容易地利用Blitz++所提供的函数来构建。
vc71环境中编译安装
&&版本:blitz-0.8.tar.gz
将 blitz-0.8/Blitz-VS.NET.zip 解压到当前目录下
打开 Blitz-Library.sln&&编译即可
头文件在 %blitz_root%/blitz
& && && &%blitz_root%/random
库文件在 %blitz_root%/lib& & (静态库)
头文件添加方法如:
#i nclude& &有时要链接lib库
#i nclude& &不需要lib库
4& &log4cpp& &(日志处理)
& & -------
& & -------
& &Log4cpp 是 Log4J 的 C++ 移植版本,开放源代码并且完全免费。与 Log4J 能够跨平台一样,Log4cpp
也致力于写出跨平台的 C++ 程序。Log4cpp 主要是用于 C++ 程序中写 log 文件,与此同时,Log4cpp 中
有很多有用的类库,对于写跨平台 C++ 程序的人来说,可以直接拿来用,或者作为自己写跨平台类的参考。
& &Log4cpp 中的跨平台类库有明显的 Java 痕迹,比如 Class、Object 、Loader、Locale 等类。 Log4cpp
中的类都可以根据类名 new 出一个 instance,其实现的方式和 MFC 如出一辙:通过 C++ 强大的宏来实现。
& &Log4cpp 中的跨平台类库主要有:
& && &&&信号类:Condition(broadcast,signal,wait),CriticalSection (lock,unlock),WaitAccess,
& & Event(set,reset,wait),Mutex(lock,unlock), Semaphore(wait,tryWait,post)
& && &&&网络类:InetAddress,Socket,ServerSocket,DatagramSocket,SocketInputStream,
& & SocketOutputStream
& && &&&日期类:DateFormat,DateTimeDateFormat,System(currentTimeMillis)
& && &&&文件类:FileWatchdog(doOnChange)
& && &&&内存操作类:基于引用计数机制的智能指针 ObjectPtrT
& && &&&字符串操作类:StrictMath,StringHelper(toUpperCase,toLowerCase,trim,equalsIgnoreCase
& & ,endsWith,format),StringTokenizer
& && &&&线程类:Thread(start,run,join)
& &使用以上的类不用考虑 thread handle, event handle, socket handle 之类的 handle 问题,所有这些文
件已经被封装了。很好用,对不对?
& &不足之处在于没有 GUI 类。ANSI C++ 中对于目录等文件系统的处理功能较弱,这里面也没有目录处理类。
另外 Socket 的 read(void * buf, size_t len) 不能设置 timeout,并且如果读取数据个数小于 len 那么
read 函数将一直堵塞,不太好用,很可惜。实际的使用上面,可以考虑做一个 Socket 子类,重写 read() 函数。
vc71环境中编译安装
&&版本:log4cpp-0.3.5rc1.tar.gz
& &打开 msvc6&&编译即可
头文件在 %log4cpp_root%/include\log4cpp
库文件在 %log4cpp_root%/lib
头文件添加方法如:
#i nclude& &需要链接lib库
5& &Crypto++& &加/解密算法库
& &提供处理密码,消息验证,单向hash,公匙加密系统等功能的免费库。
Crypto++ 是一个非常专业的C++ 密码学函式库,几乎在密码学里头常见的演算法都可以在Crypto++
找到实作的函式,如:block 与stream&&ciphers,hash functions,MACs,random number generators,
public key 加密...等方法
vc71环境中编译安装
&&版本:cryptopp521.zip
直接通过 cryptest.dsw 相关的库
头文件在 %cryptopp_root%
库文件在 %cryptopp_root%/lib
头文件添加方法如:
#i nclude &*.h&&&需要链接lib库
& & ------
& & C+ +库的代表,超重量级的网络通信开发框架。ACE自适配通信环境(Adaptive Communication Environment)
是可以自由使用、开放源代码的面向对象框架,在其中实现了许多用于并发通信软件的核心模式。ACE提供了一组
丰富的可复用C++ 包装外观(Wrapper Facade)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包括:
事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存管理、消息路由、分布式服务动
态(重)配置、并发执行和同步,等等。
7. CppUnit
& & -------
  一个c++的单元测试框架,可以通过派生测试类的方式,定制具体的测试方案。xUnit家族的一员,
从JUnit移植而来,JUnit是Java语言的单元测试框架。
vc71环境中编译安装
&&版本:cppunit-1.10.2.tar.gz
直接通过 CppUnitLibraries.dsw&&编译相关的库
头文件在 %cppunit_root%/cppunit
库文件在 %cppunit_root%/lib
头文件添加方法如:
#i nclude& &需要链接lib库
& && & -----
& && & -----
& && & -----
& &&&其实可和Boost一起介绍它,一个实验性质的库。作者在loki中把C++模板的功能发
挥到了极致。并且尝试把类似设计模式这样思想层面的东西通过库来提供。同时还提供
了智能指针这样比较实用的功能。
& &该库系模板库,库本身无需编译,在你的工程文件中 引用头文件就可以使用,
如果 你直接或间接使用了small object,那你需要在你的工程文件 加上 SmallObj.cpp
如果 你直接或间接使用了Singletons,那你需要在你的工程文件 加上 Singleton.cpp
-----------------------------------------------------------------------------------------
学术性的C++库:
-----------------------------------------------------------------------------------------
1& &&&FC++: The Functional C++ Library
& &&&--------
&&这个库提供了一些函数式语言中才有的要素。属于用库来扩充语言的一个代表作。如果想要在OOP之外寻找另
一分的乐趣,可以去看看函数式程序设计的世界。大师Peter Norvig在 “Teach Yourself Programming in
Ten Years”一文中就将函数式语言列为至少应当学习的6类编程语言之一。
& &当前版本:FC++.1.5.zip
& & 模板库,在实际工程中 ,加上要用的头文件 就可以编译。
2& &&&CGAL
& && &-----
& & Computational Geometry Algorithms Library的目的是把在计算几何方面的大部分重要的解决方案和方
法以C++库的形式提供给工业和学术界的用户。
& & 当前版本:CGAL-3.1.zip
& &这是一个已编译的版本,当然也包括完整的源码
头文件在 %CGAL_root%/include/CGAL
库文件在 %CGAL_root%/lib/msvc7
头文件添加方法如:
#i nclude& &需要链接lib库
-----------------------------------------------------------------------------------------
其它目前我感觉还不是很爽的C++库:
-----------------------------------------------------------------------------------------
1&&Doxygen
& &&&------
& &&&------
  注释文档生成工具,较之Doc++功能更为齐全,可以生成包括HTML、PDF、RTF在内的多种格式的文档,
并有GUI界面,除了支持c/c++语言外,还支持IDL、java、PHP、c#等。
2、& &QT(windows版要付钱)
& &&&-------
& &&&-------
& &Qt是Trolltech公司的一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形
用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。自从1996年早些时候,
Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE
的基础,同时它还支持Windows、Macintosh、Unix/X11等多种平台。
& &---------
& &开放源代码的GUI库。作者从自己亲身的开发经验中得出了一个理想的GUI库应该是什么样子的感受
出发,从而开始了对这个库的开发。有兴趣的可以尝试一下。
& & ------
  IBM的XML Parser,用c++语言写就,功能超级强大。号称支持多达100种字符编码,能够支持中文,
适合于大规模的xml应用。若只是很小范围的应用,则非最佳选择,毕竟,你需要“背负”约12M左右的
dll的沉重负担
5& & Xerces c++
& && & -------
  Apache的XML项目,同样是c++ 实现,来源于IBM的xml4c,因此编程接口也是和xml4c一致的。但是
目前只支持少数的字符编码,如ASCII,UTF-8,UTF-16等,不能处理包含中文字符的XML文档。
& &Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证,以及SAX和DOM API。XML验证在文档类型定
义(Document Type Definition,DTD)方面有很好的支持,并且在2001年12月增加了支持W3C XML Schema
的基本完整的开放标准。
6& &XMLBooster
& && &-------
& & 这个库通过产生特制的parser的办法极大的提高了XML解析的速度,并且能够产生相应的GUI程序
来修改这个parser。在DOM和SAX两大主流XML解析办法之外提供了另外一个可行的解决方案。
-----------------------------------------------------------------------------------------
C++开发环境(Win平台下除了 Visual C++ 和 Borland C++以外的):
-----------------------------------------------------------------------------------------
1. Cygwin&&(Windows下的一个Unix仿真环境)
& & 这个Cygwin的一部分是GCC的另外一个Windows移植版本,Cygwin是Windows下的一个Unix仿真环境。
严格的说是模拟GNU的环境,这也就是&Gnu's Not Unix&要表达的意思。
& & 至Cygwin的網站下載安裝程式setup.exe,可直接點選執行或先行下載
至個人電腦後再執行。
& & 目前我已经下载到本地了,直接安装即可。
2.&&MinGW&&(GCC的一个Windows移植版本)
& &&&1) 直接访问的,点击 Files,然后下载以下文
件:MinGW-3.1.0-1.exe, mingw32-make-3.80.0-3.exe。
安装MinGW 到 C:/MinGW 目录下,然后安装 mingw32-make 到 C:/MinGW 下,通过浏览器
到 C:/MinGW/bin 下,将 mingw32-make.exe 改名或者另外复制为 make.exe。
(以上的设置已经足够。不过为了求新,我是同时下载了 gcc-core-3.4.2-.tar.gz,
mingw-runtime-3.5.tar.gz 和 w32api-3.1.tar.gz,将它们直接解压到 C:/MinGW 下更新旧的
文件。不过这对这篇文章本身没有任何影响。新旧两种配置我都测试过。)
&&安装次序:
& &&&MinGW-3.1.0-1.exe
& &&&mingw32-make-3.80.0-3.exe
& &&&gcc-core-3.4.2-.tar.gz
& &&&mingw-runtime-3.5.tar.gz
& &&&w32api-3.1.tar.gz
& &&&gdb-5.2.1-1.exe
& &&&mingw-utils-0.3.tar.gz
& &&&binutils-2.15.91-.tar.gz
& &3)准备MinGW 用户开发的命令行环境(一个批处理)
如: mingw.bat
@rem --------------------------------------
@SET MINGW_ROOT=D:\Mingw
@echo Setting environment for using Mingw.
@set PATH=%MINGW_ROOT%\BIN;%PATH%
@set INCLUDE=%MINGW_ROOT%\INCLUDE;%MINGW_ROOT%\INCLUDE\c++\3.2.3;%MINGW_ROOT%\include\c++\3.2.3\mingw32;%MINGW_ROOT%\include\c++\3.2.3\%INCLUDE%
@set LIB=MINGW_ROOT\LIB;%LIB%
@rem ----------------------------------------
3. Dev C++& &(一个C/C++ 的集成开发环境)
& &GCC是一个很好的编译器。在Windows上的C++编译器一直和标准有着一段距离的时候,GCC就是一个
让Windows下开发者流口水的编译器。Dev-C++就是能够让GCC跑在Windows下的工具,作为集成开发环
境,还提供了同专业IDE相媲美的语法高亮,代码提示,调试等功能。由于使用Delphi开发,占用内存
少,速度很快,比较适合轻量级的学习和使用。
& &可以使用&&MinGW-GCC 作为它的编译器
4&&Eclipse-CDT
Audio/Video 3D C++ Programming Library
***3D是一个跨平台,高性能的C++库。主要的特性是提供3D图形,声效支持(SB,以及S3M),控制接口(键盘,鼠标和遥感),XMS。
& &国内游戏开发高手自己用C++开发的一个开放源代码、跨平台的游戏引擎。KlayGE是一个开放源代码、跨平台的游戏引擎,并使
用Python作脚本语言。KlayGE在LGPL协议下发行。感谢龚敏敏先生为中国游戏开发事业所做出的贡献。
&&OGRE(面向对象的图形渲染引擎)是用C++开发的,使用灵活的面向对象3D引擎。它的目的是让开发者能更方便和直接地开发
基于3D硬件设备的应用程序或游戏。引擎中的类库对更底层的系统库(如:Direct3D和OpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。
每天慢跑30分钟
每天做120个俯卧撑
睡觉睡到手抽筋,数钱数到自然醒!
screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
(@_@)(@_@)(@_@)(@_@)
空间积分0 信誉积分105 UID阅读权限20积分319帖子精华可用积分319 专家积分21 在线时间20 小时注册时间最后登录
稍有积蓄, 积分 319, 距离下一级还需 181 积分
帖子主题精华可用积分319 专家积分21 在线时间20 小时注册时间最后登录
论坛徽章:0
1、 Dinkumware C++ Library
参考站点:
P.J. Plauger编写的高品质的标准库。P.J. Plauger博士是Dr. Dobb's程序设计杰出奖
的获得者。其编写的库长期被Microsoft采用,并且最近Borland也取得了其OEM的
license,在其C/C+ +的产品中采用Dinkumware的库。
2、 RogueWave Standard C++ Library
参考站点:
这个库在Borland C++ Builder的早期版本中曾经被采用,后来被其他的库给替换了。笔
者不推荐使用。
3、SGI STL
参考站点:
SGI公司的C++标准模版库。
4、STLport
参考站点:
SGI STL库的跨平台可移植版本。
5、准标准库——Boost
Boost 库是一个经过千锤百炼、可移植、提供源代码的C++库,作为标准库的后备,是
C++标准化进程的发动机之一。 Boost库由C++标准委员会库工作组成员发起,在C++社区
中影响甚大,其成员已近2000人。 Boost库为我们带来了最新、最酷、最实用的技术,
是不折不扣的&准&标准库。
Boost中比较有名气的有这么几个库:
正则表达式库
LL parser framework,用C++代码直接表达EBNF
图组件和算法
在调用的地方定义短小匿名的函数对象,很实用的functional功能
Concept check
检查泛型编程中的concept
用模板实现的元编程框架
可移植的C++多线程库
把C++类和函数映射到Python之中
内存池管理
5个智能指针,学习智能指针必读,一份不错的参考是来自CUJ的文章:
Smart Pointers in Boost,哦,这篇文章可以查到,CUJ是提供在线浏览的。中文版见笔
者在《Dr. Dobb's Journal软件研发杂志》第7辑上的译文。
Boost 总体来说是实用价值很高,质量很高的库。并且由于其对跨平台的强调,对标准
C++的强调,是编写平台无关,现代C++的开发者必备的工具。但是Boost 中也有很多是
实验性质的东西,在实际的开发中实用需要谨慎。并且很多Boost中的库功能堪称对语言
功能的扩展,其构造用尽精巧的手法,不要贸然的花费时间研读。Boost另外一面,比如
Graph这样的库则是具有工业强度,结构良好,非常值得研读的精品代码,并且也可以放
心的在产品代码中多多利用。
参考站点:(国内镜像:-
view.org/tech/lib/boost/index.htm)
在众多C++的库中,GUI部分的库算是比较繁荣,也比较引人注目的。在实际开发中,GUI
库的选择也是非常重要的一件事情,下面我们综述一下可选择的GUI库,各自的特点以及
相关工具的支持。
大名鼎鼎的微软基础类库(Microsoft Foundation Class)。大凡学过VC++的人都应该
知道这个库。虽然从技术角度讲,MFC是不大漂亮的,但是它构建于Windows API 之上,
能够使程序员的工作更容易,编程效率高,减少了大量在建立 Windows 程序时必须编写
的代码,同时它还提供了所有一般 C++ 编程的优点,例如继承和封装。MFC 编写的程序
在各个版本的Windows操作系统上是可移植的,例如,在 Windows 3.1下编写的代码可以
很容易地移植到 Windows NT 或 Windows 95 上。但是在最近发展以及官方支持上日渐
参考网站:
Qt 是Trolltech公司的一个多平台的C++图形用户界面应用程序框架。它提供给应用程序
开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,
并且允许真正地组件编程。自从1996年早些时候,Qt进入商业领域,它已经成为全世界
范围内数千种成功的应用程序的基础。Qt也是流行的Linux桌面环境KDE 的基础,同时它
还支持Windows、Macintosh、Unix/X11等多种平台。
3) WxWindows
参考网站:
跨平台的GUI库。因为其类层次极像MFC,所以有文章介绍从MFC到WxWindows的代码移植
以实现跨平台的功能。通过多年的开发也是一个日趋完善的 GUI库,支持同样不弱于前
面两个库。并且是完全开放源代码的。新近的C++ Builder X的GUI设计器就是基于这个
开放源代码的GUI库。作者从自己亲身的开发经验中得出了一个理想的GUI库应该是什么
样子的感受出发,从而开始了对这个库的开发。有兴趣的可以尝试一下。
参考网站:
基于ATL的一个库。因为使用了大量ATL的轻量级手法,模板等技术,在代码尺寸,以及
速度优化方面做得非常到位。主要面向的使用群体是开发COM轻量级供网络下载的可视化
控件的开发者。
参考网站:
GTK是一个大名鼎鼎的C的开源GUI库。在Linux世界中有Gnome这样的杀手应用。而GTK就
是这个库的C++封装版本。
参考网站:
C++库的代表,超重量级的网络通信开发框架。ACE自适配通信环境(Adaptive
Communication Environment)是可以自由使用、开放源代码的面向对象框架,在其中实
现了许多用于并发通信软件的核心模式。ACE提供了一组丰富的可复用C++ 包装外观
(Wrapper Facade)和框架组件,可跨越多种平台完成通用的通信软件任务,其中包
括:事件多路分离和事件处理器分派、信号处理、服务初始化、进程间通信、共享内存
管理、消息路由、分布式服务动态(重)配置、并发执行和同步,等等。
2) StreamModule
参考网站:
设计用于简化编写分布式程序的库。尝试着使得编写处理异步行为的程序更容易,而不
是用同步的外壳包起异步的本质。
3) SimpleSocket
参考网站:
这个类库让编写基于socket的客户/服务器程序更加容易。
4) A Stream Socket API for C++
参考网站:
又一个对Socket的封装库。
参考网站:
Xerces-C++ 是一个非常健壮的XML解析器,它提供了验证,以及SAX和DOM API。XML验证
在文档类型定义(Document Type Definition,DTD)方面有很好的支持,并且在2001年12
月增加了支持W3C XML Schema 的基本完整的开放标准。
2) XMLBooster
参考网站:
这个库通过产生特制的parser的办法极大的提高了XML解析的速度,并且能够产生相应的
GUI程序来修改这个parser。在DOM和SAX两大主流XML解析办法之外提供了另外一个可行
的解决方案。
3) Pull Parser
参考网站:
这个库采用pull方法的parser。在每个SAX的parser底层都有一个pull的parser,这个
xpp把这层暴露出来直接给大家使用。在要充分考虑速度的时候值得尝试。
参考网站:
Xalan是一个用于把XML文档转换为HTML,纯文本或者其他XML类型文档的XSLT处理器。
5) CMarkup
参考网站:
这是一种使用EDOM的XML解析器。在很多思路上面非常灵活实用。值得大家在DOM和SAX之
外寻求一点灵感。
6) libxml++
libxml++是对著名的libxml XML解析器的C++封装版本
1) Blitz++
参考网站:
Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像C++ 一
样方便,同时又比Fortran速度更快的数值计算环境。通常,用C++所写出的数值程序,
比 Fortran慢20%左右,因此Blitz++正是要改掉这个缺点。方法是利用C++的template技
术,程序执行甚至可以比Fortran更快。 Blitz++目前仍在发展中,对于常见的SVD,
FFTs,QMRES等常见的线性代数方法并不提供,不过使用者可以很容易地利用Blitz++所
提供的函数来构建。
参考网站:
POOMA是一个免费的高性能的C++库,用于处理并行式科学计算。POOMA的面向对象设计方
便了快速的程序开发,对并行机器进行了优化以达到最高的效率,方便在工业和研究环
境中使用。
参考网站:
Matrix Template Library(MTL)是一个高性能的泛型组件库,提供了各种格式矩阵的大
量线性代数方面的功能。在某些应用使用高性能编译器的情况下,比如Intel的编译器,
从产生的汇编代码可以看出其与手写几乎没有两样的效能。
参考网站:
Computational Geometry Algorithms Library的目的是把在计算几何方面的大部分重要
的解决方案和方法以C++库的形式提供给工业和学术界的用户。
1) Audio/Video 3D C++ Programming Library
参考网站:
AV3D是一个跨平台,高性能的C++库。主要的特性是提供3D图形,声效支持(SB,以及
S3M),控制接口(键盘,鼠标和遥感),XMS。
参考网站:
国内游戏开发高手自己用C++开发的游戏引擎。KlayGE是一个开放源代码、跨平台的游戏
引擎,并使用Python作脚本语言。KlayGE在LGPL协议下发行。感谢龚敏敏先生为中国游
戏开发事业所做出的贡献。
参考网站:
OGRE (面向对象的图形渲染引擎)是用C++开发的,使用灵活的面向对象3D引擎。它的
目的是让开发者能更方便和直接地开发基于3D硬件设备的应用程序或游戏。引擎中的类
库对更底层的系统库(如:Direct3D和OpenGL)的全部使用细节进行了抽象,并提供了
基于现实世界对象的接口和其它类。
1) C++ Threads
参考网站:
这个库的目标是给程序员提供易于使用的类,这些类被继承以提供在Linux环境中很难看
到的大量的线程方面的功能。
2) ZThreads
参考网站:
一个先进的面向对象,跨平台的C++线程和同步库。
参考网站:
一个基于STL的C++库,用于序列化POD,STL容器以及用户定义的类型。
2) Simple XML Persistence Library
参考网站:
这是一个把对象序列化为XML的轻量级的C++库。
1) C++ Str Library
参考网站:
操作字符串和字符的库,支持Windows和支持gcc的多种平台。提供高度优化的代码,并
且支持多线程环境和Unicode,同时还有正则表达式的支持。
2) Common Text Transformation Library
参考网站:
这是一个解析和修改STL字符串的库。CTTL substring类可以用来比较,插入,替换以及
用EBNF的语法进行解析。
参考网站:
这是由微软研究院的研究人员开发的处理正则表达式的库。在小型匹配的情况下有非常
优秀的表现。
1) P::Classes
参考网站:
一个高度可移植的C++应用程序框架。当前关注类型和线程安全的signal/slot机制,i/o
系统包括基于插件的网络协议透明的i/o架构,基于插件的应用程序消息日志框架,访问
sql数据库的类等等。
2) ACDK - Artefaktur Component Development Kit
参考网站:
这是一个平台无关的C++组件框架,类似于Java或者.NET中的框架(反射机制,线程,
Unicode,废料收集,I/O,网络,实用工具,XML,等等),以及对Java, Perl,
Python, TCL, Lisp, COM 和 CORBA的集成。
3) dlib C++ library
参考网站:
各种各样的类的一个综合。大整数,Socket,线程,GUI,容器类,以及浏览目录的API等
4) Chilkat C++ Libraries
参考网站:
&http://www.c &http://www.c &/cpp_libr
这是提供zip,e-mail,编码,S/MIME,XML等方面的库。
5) C++ Portable Types Library (PTypes)
参考网站: &/ptypes/
这是STL的比较简单的替代品,以及可移植的多线程和网络库。
参考网站:
哦,这又是一个尝试提供一切的C++库
参考网站:
哦,你可能抱怨我早该和Boost一起介绍它,一个实验性质的库。作者在loki中把C++模
板的功能发挥到了极致。并且尝试把类似设计模式这样思想层面的东西通过库来提供。
同时还提供了智能指针这样比较实用的功能。
ATL(Active Template Library)是一组小巧、高效、灵活的类,这些类为创建可互操作
的COM组件提供了基本的设施。
3) FC++: The Functional C++ Library
这个库提供了一些函数式语言中才有的要素。属于用库来扩充语言的一个代表作。如果
想要在OOP之外寻找另一分的乐趣,可以去看看函数式程序设计的世界。大师 Peter
Norvig在 &Teach Yourself Programming in Ten Years&一文中就将函数式语言列为至
少应当学习的6类编程语言之一。
参考网站:
另外一个实现函数式语言特性的库
5) Crypto++
提供处理密码,消息验证,单向hash,公匙加密系统等功能的免费库。
还有很多非常激动人心或者是极其实用的C++库,限于我们的水平以及文章的篇幅不能包
括进来。在对于这些已经包含近来的库的介绍中,由于并不是每一个我们都使用过,所
以难免有偏颇之处,请读者见谅。
6) Managed C++ wrapper for ZLib
压缩组件Zlib的C++类库
7) CppSQLite - C++ Wrapper for SQLite
SQLite C++封装库
图像格式转换
正如我们可以通过计算机历史上的重要人物了解计算机史的发展,C++相关人物的网站也
可以使我们得到最有价值的参考与借鉴,下面的人物我们认为没有介绍的必要,只因下
面的人物在C++领域的地位众所周知,我们只将相关的资源进行罗列以供读者学习,他们
有的工作于贝尔实验室,有的工作于知名编译器厂商,有的在不断推进语言的标准化,
有的为读者撰写了多部千古奇作......
Bjarne Stroustrup
Stanley B. Lippman http: ///slippman/(中文版
Scott Meyers
David Musser
Bruce Eckel
Nicolai M. Josuttis
Herb Sutter
Andrei Alexandrescu
每天慢跑30分钟
每天做120个俯卧撑
睡觉睡到手抽筋,数钱数到自然醒!
screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
空间积分0 信誉积分0 UID阅读权限50积分2853帖子精华可用积分2853 专家积分0 在线时间197 小时注册时间最后登录
小富即安, 积分 2853, 距离下一级还需 2147 积分
帖子主题精华可用积分2853 专家积分0 在线时间197 小时注册时间最后登录
论坛徽章:0
标记下,等我能用时来好好研究下
空间积分0 信誉积分401 UID44767阅读权限100积分14923帖子精华可用积分14923 专家积分275 在线时间4141 小时注册时间最后登录
帖子主题精华可用积分14923 专家积分275 在线时间4141 小时注册时间最后登录
论坛徽章:1
原帖由 dhlfigo 于
16:14 发表
gcc -o test test2.c -ldl -pthread
上面的 -ldl谁能详细解释下 什么库??
汗,问题都发到这了。
man dlopen

我要回帖

更多关于 汇编函数调用 的文章

 

随机推荐