Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

Windows下的静态库和动态库

$
0
0

       最近要写一个动态库的东西,中间碰到了些问题,在网上一搜发现全是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             //导出表
              Dll_Mul @1      //导出函数
               Dll_Div @2

使用

对于动态库的使用方法有三种:

1.在工程中setting动态库的路径(这里要注意,动态库的编译生成了两个重要文件,一个是lib一个是dll)

2.#pragma comment(lib,"path")的方式去加载

3.使用动态库API LoadLibrary进行加载动态库,然后在动态库中用GetProcAddress获得函数的首地址,进行使用函数

如果说使用的是C动态库函数要声明extern “C” 函数名


作者:houhaipeng1992 发表于2013-3-10 17:47:48 原文链接
阅读:54 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>