如何自己做一个C++库?
写程序用库再平常不过了
std,boost...
出于好奇想:这些库是怎么实现的呢?
怎么样能自己做一个库,实现一些简单的功能,然后在程序里引用呢?
比如,自己写了一个随机数产生器Random,
怎么样能以库的形式在程序中使用呢??
等待高人指教。。。。。
[解决办法]
楼主在google/baidu或者www.vckbase.com上搜搜制作lib,dll相关资料。
当然,C++库其实分好多种:
纯头文件的也有啊,比如STL,Boost部分都是以头文件形式存在的。
静态库,lib
动态库,dll
还有com的 dll ocx 等,本质上也是dll
[解决办法]
一个简单的例子:【Ref】
在VC++6.0中new一个名称为libTest的static library工程(单击此处下载本工程),并新建lib.h和lib.cpp两个文件,lib.h和lib.cpp的源代码如下:
//文件:lib.h
#ifndef LIB_H
#define LIB_H
extern "C " int add(int x,int y); //声明为C编译、连接方式的外部函数
#endif
//文件:lib.cpp
#include "lib.h "
int add(int x,int y)
{
return x + y;
}
编译这个工程就得到了一个.lib文件,这个文件就是一个函数库,它提供了add的功能。将头文件和.lib文件提交给用户后,用户就可以直接使用其中的add函数了。
标准Turbo C2.0中的C库函数(我们用来的scanf、printf、memcpy、strcpy等)就来自这种静态库。
下面来看看怎么使用这个库,在libTest工程所在的工作区内new一个libCall工程。libCall工程仅包含一个main.cpp文件,它演示了静态链接库的调用方法,其源代码如下:
#include <stdio.h>
#include "..\lib.h "
#pragma comment( lib, "..\\debug\\libTest.lib " ) //指定与静态库一起连接
int main(int argc, char* argv[])
{
printf( "2 + 3 = %d ", add( 2, 3 ) );
}
[解决办法]
库是一种文件。
编译器(准确的说应该是链接器)把它作为输入文件,生成最后的可执行文件。
1.编译器吧源码编译成目标文件
2.把目标文件链接在一起生成可执行文件(静态库),或者 "库 "!!!!!!
你可以查看连接器的参数,可以设置输出文件的类型
大概是这么个意思,自己仔细研究吧
可以先用vc向导生成简单的lib和dll然后查看工程配置文件,看看他自动生成的编译链接参数