日期:2014-05-17  浏览次数:20657 次

Windows下的静态库和动态库

       最近要写一个动态库的东西,中间碰到了些问题,在网上一搜发现全是linux平台下动态库和静态库的生成方法,感觉都是些大牛,经过反复尝试终于解决了眼前的困难,因此就把他总结了一下,写出来供大家分享,废话不多说,开始。

一、写C语言函数的静态库

创建:1.新建win32静态库项目

    2.写入我们的C函数,编译生成lib静态库

  使用:

   1.可以在工程中Setting设置link属性包含我们静态库所在路径和库名,然后我们就可以在工程中直接使用这个c函数了

   2.我们也可以不在工程中设置,而是通过代码的方式声明我们要连接的静态库,方法是使用关键字pragma例如

#pragma comment(lib, "../lib/winclib.lib")好了,所有的C静态库中的函数我们都可以在项目中使用了

二、创建cpp函数的静态库

创建:1.新建win32静态库项目

    2.写入我们的Cpp函数,编译生成lib静态库

使用:

   cpp静态库的加载方法同c静态库加载方法一样,有两种,可以是代码声明也可以在工程中设置,但是要想使用cpp静态库中的函数,还必须对cpp函数的原型进行声明才行,这是cpp静态库和c静态库唯一的不同

三、写C和Cpp语言函数动态库

创建:

使用Win32 DLL项目,创建DLL,添加相应的文件

2.在文件中定义c或者cpp风格的函数,但是函数前要声明__declspec(dllexport)进行导出

例如:__declspec(dllexport) int Dll_Add()

3.若要以C风格函数进行输出的话还要加上extern "C"

例如:extern "C" __declspec(dllexport) int Dll_Add();

另外也可以对这些文件按模块化进行导出:这样函数前就不用进行代码说明了,只用定义一个def文件,文件格式为:

LIBRARY dllfunc.dll //导出库
             EXPORTS             //导出表