POCO是C++实现的包含网络的,可以集成到应用的开源库。官网地址为:http://pocoproject.org。
安装
我下载的是“poco-1.7.3-all.tar.gz”,解压后,先配置,我已经安装openssl,不安装Data模块
./configure --omit=Data/ODBC,Data/MySQL
make
make install
动态链接库默认安装在’/usr/local/lib/’下
头文件默认安装在’/usr/local/include’下
测试
使用官网例子,测试一下(test.cpp):
#include <Poco/BasicEvent.h>
#include <Poco/Delegate.h>
#include <iostream>
using Poco::BasicEvent;
using Poco::Delegate;
class Source
{
public:
BasicEvent<int> theEvent;
void fireEvent(int n)
{
theEvent(this, n);
}
};
class Target
{
public:
void onEvent(const void* pSender, int& arg)
{
std::cout << "onEvent: " << arg << std::endl;
}
};
int main(int argc, char** argv)
{
Source source;
Target target;
source.theEvent += Delegate<Target, int>(
&target, &Target::onEvent);
source.fireEvent(42);
source.theEvent -= Delegate<Target, int>(
&target, &Target::onEvent);
return 0;
}
编写Makefile
SRC = ./test.cpp
OBJ = $(SRC:%.cpp=%.o)
EXEC = test
CC = g++
FLAGS = -O2
#-L表示在链接时要链接库的路径,但是在生成的ELF文件中,并不包含库的路径,需要LD_LIBRARY_PATH中有这个库的路径
#-Wl,-rpath不仅仅表示在链接时要查找这个路径下的库,还要把这个路径写到ELF文件中,且查找顺序优先于$LD_LIBRARY_PATH
LIB = -L/usr/local/lib/
LIB_ELF = -Wl,-rpath,/usr/local/lib/
LIB_POCO = -lPocoUtil -lPocoXML -lPocoNet -lPocoFoundation
INCLUDE = -I/usr/local/include
test:$(OBJ)
$(CC) $^ $(LIB) $(LIB_POCO) $(FLAGS) -o $(EXEC)
clean:
rm -f test.o
%.o:%.cpp
$(CC) -c $(INCLUDE) $(FLAGS) $< -o $@
.PHONY:test