以后的主要工作就是做库了,将我们的C或者C++写的接口做成库,给客户端使用,因此有必要知道库的使用和制作方法。主要是在Eclipse下搞了搞,公司用的是Carbide,也差不多。库做好了,用SVN已提交就搞定了,工作不是很重。学习永无止境啊,以前干了两三个月的.Net,数据库,还是习惯现在,基础还是比较重要的.. 新建工程Eclipse->File->New->C++ project(或者C project)->Shared Library(或者Static Library),然后新建.h和.c文件,分别如下:/* * freeptr.h * * Created on: 2012-8-19 * Author: Administrator */#ifndef FREEPTR_H_#define FREEPTR_H_#ifdef __cpluscplusextern "C"{#endifvoid freeCharPtr( char ** ch, ...);#ifdef __cpluscplus}#endif#endif /* FREEPTR_H_ *//* * freeptr.cpp * * Created on: 2012-8-19 * Author: Administrator */#include #include #include "freeptr.h"void freeCharPtr( char ** ch, ...) s//使用时记得在最后添加NULL参数{ va_list ap; char ** p; va_start(ap, ch); free(*ch); *ch = NULL; while (p = va_arg(ap, char ** )) { free(*p); *p = NULL; }}然后Ctrl+b就会生成.dll - 动态库 或者.a - 静态库 文件:其实挺简单的,这样我们就可以随时做自己的库,然后使用如下:文件都准备好后,选中工程鼠标右击->C/C++ Build->Settings->Tools Settings下MinGw C++ Linker(看具体的Libraries在哪)->Libraries,然后在Libraries (-l)下添加库的名字,本例子是libfreeptrlib,在Library search path (-L)下添加"${workspace_loc:/库路径}",为了方便我直接将库拷贝到了自己工程新建的lib/目录下,因此库搜索路径为"${workspace_loc:/libtest2/lib}",搞定可以使用了://============================================================================// Name : libtest2. cpp// Author : hl// Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//============================================================================#include #include #include #include "../include/freeptr.h"using namespace std;int main() { char * pCh = ( char *)malloc (4 * sizeof(char )); memcpy(pCh, "sb ", 3); //拷贝3个就会把\0一块拷贝,否则需要下步操作. //*(pCh + 2) = '\0'; cout endl; cout endl; //freeCharPtr(&pCh, NULL); /*freeptrlib.dll库的释放函数. it's ok?有问题,注释掉就看不到打印结果 了,估计是函数有问题。*/ return 0;}编译运行,oK了。网上资料说运行时需要:但我的libtest2的时候,没加,运行也可以!我想直接已经添加过搜索路径,应该编译器可以find,so..至于静态库的使用: 编译生成的.a文件可以拷贝的工程目录新建的lib下,然后按照和上班的方法类似进行: 选中工程鼠标右击->C/C++ Build->Settings->Tools Settings下MinGw C++ Linker(看具体的Libraries在哪)->Libraries,然后在Libraries (-l)下添加库的名字,本例子是libfreeptrlib.a,但是要注意我们再添加静态库名字的时候只需要添加freeptrlib就可以了,因为编译器会自动给我们在首尾分别添加lib和.a 在Library search path (-L)下添加"${workspace_loc:/库路径}",为了方便我直接将库拷贝到了自己工程新建的lib/目录下,因此库搜索路径为"${workspace_loc:/libtest3/lib}",搞定可以使用了。 然后就可以编译和使用了,包含头文件,然后编译运行,ok了!! 汗.... 11-08 05:59