PWLib指引者

本文详细介绍了PWLib,一个用于构建在Microsoft和UnixX操作系统上的应用程序的完整且庞大的C++类库。PWLib在设计时就考虑到了多平台GUI工具包的应用需求,如KDE、wxWindows和OpenH323等。它不仅提供了基本的容器类,还能与STL兼容,并广泛应用于多种产品中。文章还提供了如何使用PWLib的简易教程,包括创建基本的C++程序示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文网址:http://blog.youkuaiyun.com/modena/archive/2005/06/16/395547.aspx

 

刚开始学PWLib,只能以混乱形容,翻译并拼凑出这篇短小的文章,希望后来者少走一些弯路

Portable Windows Library

PWLib 1.9.0

概述

为了可以同时构建在MicrosoftUnix XWindow 操作系统上应用程序,从很多年前开始,PWLib 从创建到逐步完善,已经成为相当完整而庞大的C ++类库。 PWLib 在设计之初还提供了Macintosh 接口,但至今未被实现。

从此,大量出现的多平台GUI 工具包,例如KDEwxWindows 以及OpenH323 等的开发成为PWLib 的主要应用者。他们开始更注重于解决网络、I/O 移植性能、多线程以及可移植性能。通常PWLib 被用来构建高性能和高移植性能的网络中心应用程序。

除了这些高级别的应用,早期PWLib 还扩充了一些基本的容器类,比如数组、线性队列、排序队列(RB Tree )及散列集合(hash 表)。在STL 作为一种标准出现前,就已经在这里被构建。很可惜的是,这些结构同算子及通用的算法规则不能兼容。当然,这个领域的开发一直在进行之中,目前已经能够同STL 兼容,并将在未来会逐步增加对STL 的引入。

PWLib 被广泛应用于多家公司,包括商业性质还是开源的产品中。PWLib 创立本意主要是为了支持OpenH323 项目,但作为一个单独的基本库,她非常完善。

PWLib 中的类分为两种类型:基本类控制组件基本类 包含了所有对诸如容器、线程、SOCKET 等平台特性相关的结构的基本支持。所有的PWLib 程序都需要有基本类

控制组件 实现一些通常是平台无关或者不是所有程序都需要的的功能。在一些特殊的平台(比如Windows ),基本类控制组件 甚至被分为单独的压缩库。而在其他平台(比如Unix 平台)中,所有代码被组合成一个单独的类库,并在不需要的地方直接告诉链接器忽略相关代码。

早期PWLib 还支持GUI 类和GUI 组件,但在新的版本中,将不再支持。

如何使用PWLib

一个关于PWLib 最简便的教程,请参考http://toncar.cz/openh323/tut , 这里我们说明一下如何创建一个最简单的程序。

下面的代码演示如果基于PWLib 架构编写标准的”Hello world!” 程序。

 

// hello.cxx

 

#include <ptlib.h>

 

class Hello : public PProcess

{

  PCLASSINFO(Hello, PProcess)

  public:

        void Main();

};

 

PCREATE_PROCESS(Hello)

 

void Hello::Main()

{

  cout << "Hello world!/n";

}

 

// End of hello.cxx

PCREATE_PROCESS 宏定义定义了main()# 函数并创建了Hello 实例。使用C++ 初始化全局静态变量比较容易出问题(销毁更容易出问题),因此建议尽力在你的PProcess 中方式所有内容,而不是在全局中定义。

基本类

基本对象类

  • PObject – PWLib 所有其他类的基本类
  • PContainer – PWLib 中所有带引用计数类的基本类
  • PAbstractArray 数组抽象基类,等同于STL 中的vector 模板类
  • PAbstractList 链表抽象基类,等同于STL 中的list 模板类
  • PAbstractDictionary 集合抽象基类,等同于STL 中的map 模板类
  • PString 字符串抽象基类,等同于STL 中的string

I/O 信道类

基于PChannel 抽象类的实现基本I/O 的类集合

网络类

实现网络Sockets 抽象 ( 基本上基于Berkeley sockets)

进程和线程类

处理进程、多线程及同步的相关类

  • PProcess 为一个正在运行的程序实现一个主控制线程
  • PServiceProcess 实现后台或者系统进程
  • PThread 抽象一个控制线程或者执行上下文
  • PSemaphore 信号量,仅仅基于一个计数器的同步
  • PMutex 互拆量,仅仅基于一个相互的排斥的同步
  • PCriticalSection 临界量,实现对一个临界区域的独占访问的同步
  • PSyncPoint 允许多线程同步访问一个特殊的代码点,请参看PSyncPointAck
  • PAtomicInteger 原子,实现对一个带有原子增减操作的整型计数器

其他类

  • PArgList 为一个控制台程序分解命令行
  • PConfig – 通过一种平台允许的机制,为程序配置提供一种安全的存储方式
  • PTime 抽象一个完整的时间和日期使用类
  • PTimeInterval 为两个PTime 值之间的间隔抽象一个使用类
  • PDynaLink 实现动态加载代码模型
  • PRemoteConnection 控制远程拨号连接
  • PMail 通过平台允许的机制发送邮件
  • PPluginManager 管理插件代码模型
  • PAbstractFactory – 通过模版实现一个“抽象工厂”的范例
  • PSmartPointer 一个包含引用计数指针
  • PNotifier 一个允许任何类回调其他类成员函数的通知函数
  • PSmartNotifierFunction 通过对象ID 而不是指针的智能通知函数

控制组件

HTTP

用来实现HTTP 协议

协议类

实现不同的Internet 相关协议。大部分在PWLib 中已经实现,有些需要额外的库的支持。

其他类

ASN.1 原语支持类

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值