Poco C++库是:

  • 一系列C++类库,类似Java类库,.Net框架,Apple的Cocoa;
  • 侧重于互联网时代的网络应用程序
  • 使用高效的,现代的标准ANSI/ISO C++,并基于STL
  • 高可移值性,并可在多个平台下可用
  • 开源,并使用Boost Software License发布
  • 不管是否商用,都完全免费

Poco库概览

特性:

  • DynamicAny与Any类
  • Cache框架
  • 基于OpenSSL的密码系统
  • 日期,时间类库
  • 事件和通知框架
  • FTP客户端
  • 跨平台的文件系统类库
  • HTML表单类库
  • HTTP客户端和服务端(支持SSL),C++ 服务器页面编译器
  • 日志框架
  • 多线程框架(线程池,活动对象,工作队列等)
  • POP3客户端类库
  • 跨平台,一次编写,多平台编译和运行
  • 进程管理和进程间通信类库
  • 反射框架
  • 基于PCRE的正则表达式
  • SMTP客户端类库
  • 数据库访问类库(SQLite,MySQL, ODBC)
  • 支持SSL/TLS,基于OpenSSL
  • 动态类库加载
  • 先进的内存和指针管理(Buffer, Pool)
  • Socket类库
  • 网络数据流类库,支持Base64,HexBinary编解码,压缩等等
  • 字符串格式化和其它字符串工具类库
  • TCP服务器框架(多线程)
  • 文本编码和转换
  • Tuples
  • URI支持
  • 支持UTF8和Unicode编码
  • UUID生成器
  • XML生成和解析器
  • Zip文件操作类库

Poco的使命

  • Poco是一个强大的类库,并易于构建自己的应用程序
  • Poco帮助你创建跨平台的应用程序(一次编写,多平台编译和运行)
  • 模块化和可扩展,可应用于嵌入式到企业级程序
  • 提供全面,易懂的编程接口
  • 使用C++语言,快速且高效
  • Poco崇尚简易
  • 在设计,代码风格和文档上保持一致
  • Poco强调代码质量,包括可读性,综合性,一致性,编码风格和可测试性
  • Poco使得C++编程更加容易

指导方针

  • 高度关注代码质量,编码风格,一致性,可读性
  • 高度关注测试
  • 注重实用性
  • 基于现有的,可靠的组件开发

版本历史

  • Summer 2004: Günter Obiltschnig started development
  • February 2005: First release on SourceForge
  • (Release 0.91 under Sleepycat license)
  • May 2005: First contributions by Aleksandar Fabijanic
  • January 2006: Release 1.0
  • March 2006: Release 1.1
  • July 2006: Moved to Boost license, POCO Community Website
  • August 2006: Release 1.2
  • May 2007: Release 1.3
  • July 2010: Stable Release 1.3.7,
  • about 20 contributors, used in 100s of projects

支持平台

  • Microsoft Windows
  • Linux
  • Mac OS X
  • HP-UX, Solaris, AIX*
  • Embedded Linux (uClibc, glibc)
  • iOS
  • Windows Embedded CE
  • QNX

Poco应用场景

  • 创建自动化的中间件和设备
  • 工业自动化和工业设备
  • 流量控制系统
  • 健康系统
  • 测量,数据收集和测试系统
  • 消费电子产品和家庭自动化产品
  • 测量
  • 航空交通管理系统
  • VoIP
  • 票务和入口控制系统
  • 包装应用程序

Poco的优势

  • 全面的,完整的C++框架,可减少开发工作,快速让产品走向市场
  • 易学易使用,以及相当多的示例代码和良好的文档
  • 原生的C++代码,性能优秀,低内存占用
  • 平台无关,一处编写,跨平台编译和运行
    • 大多数情况下,可以开发机上完成开发和调试工作
    • 可以非常容易的迁移到新平台

编译

下面简单介绍一下方法,以 vs2010 为例。

第一种方法:

(1) Poco 根目录下有build_vs100.cmd和buildwin.cmd这两个批处理文件, 我们得修改一下它们。
    把build_vs100.cmd 修改为以下内容:
    @echo off
    if defined VS100COMNTOOLS (
       call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\vsvars64.bat")
     buildwin 100 build all both x64 samples

红色的部分是vsvars64.bat的路径,具体要看本机的安装位置。这里因为是要编译X64,所以要修改环境。

蓝色部分是执行编译时候的参数(注意X64的X要小写)。参数的具体说明为:

buildwin VS_VERSION [ACTION] [LINKMODE] [CONFIGURATION] [PLATFORM] [SAMPLES] [TESTS] [TOOL]
    VS_VERSION:    71|80|90|100|110  
    ACTION:        build|rebuild|clean
    LINKMODE:      static_mt|static_md|shared|all
    CONFIGURATION: release|debug|both
    PLATFORM:      Win32|x64|WinCE
    SAMPLES:       samples|nosamples
    TESTS:         tests|notests
    TOOL:          devenv|vcexpress|msbuild

具体的参数选择根据需求。

如果不需要 NetSSL_OpenSSL 和 MySQL ,此时保存后就双击它就行了。 它会自动编译好各种库。
   如果要NetSSL_OpenSSL 这个库则打开buildwin.cmd文件:
   设置 openssl 的路径,如:

set OPENSSL_DIR=c:\OpenSSL-Win64
    set OPENSSL_INCLUDE=%OPENSSL_DIR%\include
    set OPENSSL_LIB=%OPENSSL_DIR%\lib;%OPENSSL_DIR%\lib\VC
    set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE%
    set LIB=%LIB%;%OPENSSL_LIB%

注意,如果要 Poco 中的 MySQL 库 还得安装. Mysql
   编辑好后,双击  build_vs100.cmd执行编译。完成后会在Poco根目录下的lib64中看到编译好的库。在bin64中有编译好的dll。

第二种方法(适合熟悉命令行的用户)

按需求修改完buildwin.cmd文件后,使用vs2010的Tools中“Visual Studio x64 Win64 命令提示(2010)”命令,进入命令行状态。转到Poco所在的根目录,直接输入命令:

buildwin 100 build all both x64 samples

 

最后需要注意地方:

上述方法完成编译后,关于Data的MySQL、ODBC、SQLite三个库没有生成(原因不详),需要单独编译,在此以MySQL为例记录一下编译过程。在\Data\MySQL文件夹下,找到MySQL_vs100.sln文件,打开。

打开的工程是win32的,需要改为X64。在C++包含目录中添加本项目的include文件夹,例如:“C:\poco-1.5.1-all\Data\MySQL\include;”,还要添加安装的MySQL的include文件夹,例如“C:\Program Files\MySQL\MySQL Server 5.6\include”,在库目录中添加所需库的路径,例如“C:\Program Files\MySQL\MySQL Server 5.6\lib”。

注意:编译MySQL的Poco库,必须先安装MySQL。

设置好环境之后,就可以选择相应的配置(debug or release)进行编译。

编译完成后,生成的库在Poco根目录下的lib文件夹,如果是编译的动态库,则动态库在Poco根目录下的bin文件夹。

如何编译POCO的更多相关文章

  1. iOS——为Xcode编译POCO C++静态库

    一.POCO C++ library简介 POCO C++ library是一个C++编写的跨平台库,主要实现网络连接.数据库管理以及服务器,适用于跨平台.嵌入式. 二.为Xcode编译POCO C+ ...

  2. 从零开始编译Poco C++和VS2015环境配置

    Poco C++是一个C++的开源框架,详细介绍可以问百度介绍更详细,这里我就记录下我从零编译poco-1.9.0和配置 VS2015的环境,以备不时之需. 步骤:一.安装cmake: 二.编译poc ...

  3. Ubuntu下编译Poco库

    本文主要记录下Ubuntu下编译Poco C++库的配置项以备后用.系统版本:Ubuntu 16.04,1 Poco 版本:1.9.0基本的步骤如下: 1.从官网下载最新的Poco源码,地址是:htt ...

  4. 最近编译POCO 库和 Boost库的笔记

    最近在编译POCO库和BOOST库 先讲一下编译POCO库,我编译的是1.9.0,过程相当曲折,要OPENSSL修改版本的,个OPENSSL在这里下载,如果你用一般未修改的OPENSSL 是编译不了, ...

  5. Ubuntu 20.04 安装和编译poco 1.10.1

    1.首先安装其openssl其它依赖库,打开终端,使用root账户(sudo su),完成以下库的安装 //安装odbc相关库 apt-get install unixodbc apt-get ins ...

  6. Ubuntu 16.04上源码编译Poco并编写cmake文件 | guide to compile and install poco cpp library on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/281dd8cd/,欢迎阅读! guide to compile and install poco cpp library on u ...

  7. Windows 10上源码编译Poco并编写httpserver和tcpserver | compile and install poco cpp library on windows

    本文首发于个人博客https://kezunlin.me/post/9587bb47/,欢迎阅读! compile and install poco cpp library on windows Se ...

  8. linux 下cmake 编译 ,调用,调试 poco 1.6.0 小记

    上篇文章 小记了: 关于 Poco::TCPServer框架 (windows 下使用的是 select模型) 学习笔记. http://www.cnblogs.com/bleachli/p/4352 ...

  9. c++ poco StreamSocket tcpclient测试用例

    1.代码 #include <iostream> #include "Poco/Net/Socket.h" #include "Poco/Net/Stream ...

随机推荐

  1. docker 1.12 版本 docker swarm 集群

    博客已经迁移到 个人博客中 个人博客 更新地址: http://www.xf80.com/2016/10/25/docker-swarm-1.12/ docker 1.12 版本 的新特性 (1)do ...

  2. PS2键盘 + LCD12864 实验

    本实验是通过LCD12864来显示键盘上被按下的按键,实验比较简单,在LCD12864固定的DDRAM地址上显示,缺点就是不能保存上一次被按的内容,后者会覆盖掉前面,所以屏上仅有一个字符显示.保存上一 ...

  3. HDU 5487 Difference of Languages(BFS)

    HDU 5487 Difference of Languages 这题从昨天下午2点开始做,到现在才AC了.感觉就是好多题都能想出来,就是写完后debug很长时间,才能AC,是不熟练的原因吗?但愿孰能 ...

  4. mtp

    http://www.android.gs/mount-google-nexus-4-mtp-sd-card-on-ubuntu-and-other-linux-computers/ https:// ...

  5. (简单) POJ 3268 Silver Cow Party,Dijkstra。

    Description One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to atten ...

  6. Keil MDK下如何设置非零初始化变量(转)

    源:Keil MDK下如何设置非零初始化变量 一些工控产品,当系统复位后(非上电复位),可能要求保持住复位前RAM中的数据,用来快速恢复现场,或者不至于因瞬间复位而重启现场设备.而keil mdk在默 ...

  7. Lucene学习注意要点

    相关书籍: <Lucene实战>第二版: <搜索引擎基础教程>: <Lucene搜索引擎开发进阶实战>:(我现在看得书) 学习注意要点: 不要盲目从代码入手,而要先 ...

  8. php学习记录

    放了寒假.期末考试折腾了一个月都不会写代码了. 一放寒假就找了套PHP培训的课程 在这做些笔记,系统的学习一下php 2017.1.14 介绍集成环境---wamp Apache服务器根目录 / -- ...

  9. jQuery学习笔记(二)

    1. 基本选择器 #id      ("#one") .class  $(".two") element (根据给定的元素名匹配元素) $("div& ...

  10. DownloadManager 版本更新,出现 No Activity found to handle Intent 的解决办法

    项目中,进行版本更新的时候,用的是自己写的下载方案,最近看到了使用系统服务 DownloadManager 进行版本更新,自己也试试. 在下载完成以后,安装更新的时候,出现了一个 crash,抓取的 ...