vc 静态库和动态库总结(一)

注:本文参考 pdf  《VC++动态链接库(DLL)编程深入浅出》  写本文只是自己对看过的知识进行总结,如果需要可以去看参考的pdf,会更详细


概念:

         静态链接库和动态连接库都是共享代码的方式。

         如果采用静态库,那么代码会被包含在最终生成的EXE文件中;如果采用动态库,那么程序运行时可以动态的引用和卸载这个与EXE独立的DLL文件。

         另一个区别是静态库不能再包含其他动态或者静态的库文件,而动态库可以包含除自己以外的静态或动态库


                              首先来写一个简单的静态库,然后调用它。我的环境是vs2010,win7下

第一步先创建一个空项目,项目名字叫testlib(名字随意)


第二步分别创建lib.h和lib.cpp

lib.h

#ifndef LIB_H
#define LIB_H

extern "C" int add(int x,int y);

#endif //LIB_H

extern "C" 意思是以C的方式编译,为的是用c编译的程序也能够调用你写的库。


lib.cpp

#include "lib.h"

int add(int x,int y)
{
	return x+y;
}


第三步 程序写好后,因为我们不是为了编译成exe可执行文件,我们需要的是编译成静态库,所以需要修改项目属性


修改后编译,你会在项目的debug文件夹中看到testlib.lib  这就是你写的库文件


第四步调用你写的库文件里的函数

为了方便起见,我们在同一个解决方案中创建一个libCall项目。

 

右键解决方案“testlib”(1个项目)->添加->新建项目


创建好后应该是这样子



创建main.cpp

#include <stdio.h>
#include "../testlib/lib.h"

#pragma comment(lib,"../Debug/testlib.lib")
int main(int argv, char* argc[])
{
	printf("%d",add(2,3));
	getchar();
	return 0;
}
#pragma comment(lib,"../Debug/testlib.lib") 这句需要注意,"../Debug/testlib.lib"要根据.lib文件所在路径填写

#pragma comment( comment-type ,["commentstring"] )

comment-type是一个预定义的标识符,指定注释的类型,应该是compiler,exestr,lib,linker之一。

commentstring是一个提供为comment-type提供附加信息的字符串。

这个不需要深究,放置一个库搜索记录到对象文件中,让程序可以找到你的lib文件

结尾的getchar();是让用户输入一个字符,为了不让命令行一闪而过,方便看结果而添加的



对于刚开始接触程序的人,对路径总是怕写不对,“./”标识当前路径   “../”标识向上一级    路径的设置需要自己打开工程文件确认相对路径


好了,这个例子就写到这里,运行,应该可以正常显示
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值