【原创】C++关于创建和使用静态链接库
静态库是在编译时跟目标文件一起被编译的。
DEV-C++:
首先,新建工程,选择Static Library,工程名称设为Myfunc
新建一个名为func.h的头文件,代码如下
#ifndef _define
#define _define
namespace hehe
{
int foo(int x,int y);
template <typename T>
T foo1(T x,T y);
//模板定义是不产生代码的,只有在实例化的时候才会产生代码
//所以,使用了模板的函数必须放在头文件中,因为模板需要在编译时推导
template <typename T>
T foo1(T x,T y)
{
return x+y;
}
}
#endif
再新建一个func.cpp文件,添加如下代码
#include "func.h"
namespace hehe
{
int foo(int x,int y)
{
int z=1;
for(int i=0;i<y;i++)
z*=x;
return z;
}
}
编译工程,会在工程目录里生成一个Myfunc.a文件
新建一个工程,在工程->工程属性-参数中点击加入库或者对象,添加刚才生成的Myfunc.a
在工程中包含func.h
#include “func.h” 也可以把func.h放到DEV-C++的include目录里,用#include <func.h>引用
然后在主函数里就可以调用自定义的函数了
cout <<hehe::foo(4,6);
cout <<hehe::foo1(4,6);
cout <<hehe::foo1(4.0,6.0);
Visual C++:
新建一个Win32 Static Library 工程,工程名为Myfunc
在弹出的步骤1窗口中,可以选择使用预编译的头文件或不选,这里不选择
新建一个func.h,代码同上;新建一个func.cpp代码同上
编译并建立 在debug目录里会生成一个Myfunc.lib文件,把该文件移到\Microsoft Visual Studio\VC98\Lib目录里
把func.h移到\Microsoft Visual Studio\VC98\Include目录里
新建一个工程,在工程设置-->连接-->对象/库模块中增加Myfunc.lib 空格隔开
#include<func.h>或#include “func.h” 包含该头文件后就可以使用自定义的函数了