使用vs动静态库生成与调用

注意:1、在生成动态库时,需添加导出函数_delcspce(dllexport),一般紧跟包含文件后,才有生成含有lib的动态库;2、链接库有显示和隐形调用等方法;3、include后用得符号,符号<>标准库搜索,符号“”先搜索当前文件路径,若未找到该文件,就搜索标准库路径。

两种库:

•  包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。
•  包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。
共有两种链接方式:

•  动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅包含在运行时定位DLL函数的可执行代码所需的信息。
•  静态链接使用静态链接库,链接器从静态链接库LIB获取所有被引用函数,并将库同代码一起放到可执行文件中。

--------------------------------------------------------------------------------

两种文件的区别

--------------------------------------------------------------------------------

使用lib需注意两个文件:

•.h头文件,包含lib中说明输出的类或符号原型或数据结构。应用程序调用lib时,需要将该文件包含入应用程序的源文件中。
•.LIB文件。

使用dll需注意三个文件:

•.h头文件,包含dll中说明输出的类或符号原型或数据结构的.h文件。应用程序调用dll时,需要将该文件包含入应用程序的源文件中。
•.LIB文件,是dll在编译、链接成功之后生成的文件,作用是当其他应用程序调用dll时,需要将该文件引入应用程序,否则产生错误(如果不想用lib文件或者没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress装载)。
•dll文件,真正的可执行文件,开发成功后的应用程序在发布时,只需要有.exe文件和.dll文件,并不需要.lib文件和.h头文件。


动态库:

包含.dll.lib.h三个文件,动态链接库是一个可执行的模块,不能单独运行,需要应用程序调用才能使用,通常封装了函数的集合,仅在程序运行的时候才去查。.lib文件提供调用函数的位置信息,.dll是原函数代码,使用的时候必须包含以上三个文件。

静态库:

包含.lib.h文件,了、连接器从静态库LIB中获取被引用的函数,并将代码一起放到可执行文件中,使用时将以上两个文件考入当前文件的lib文件夹中。

二、生成静态可动态库

文件——新建——项目——控制台程序

下一步中选择DLL后完成


完成后新建一个.h.cpp文件,


LibTest内容和LibTest.cpp内容


完成后按F7进行编译在文件件中出现.dll文件。静态库编译同上

如果遇到如下问题


将进行如下嵌入清单改成是即可


二、完成生成后进行验证

   新建一个testlib项目

#include "stdafx.h"

#include "LibTest.h"

#include "iostream"

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

CTest dt;

int res=dt.sum(1,2);

cout<<"res:"<<res<<endl;

system("pause");

return 0;

}

 

然后进行属性设置连接将LibTest.lib写入


如果是静态连接需考入.lib.h文件到当前程序文件夹lib文件夹中,若动态连接则需要考入.dll.lib.h三个文件到lib中,编译即可


网址:http://blog.csdn.net/liuhuashui123/article/details/46799715

   http://www.cnblogs.com/lishennan/p/5053115.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值