vs下制作和使用.lib静态库
来源:互联网 发布:动态数组 链表 编辑:程序博客网 时间:2024/04/20 09:18
关于链接库的讲解在这个网址上有不错的讲解:http://www.360doc.com/content/11/0805/17/6675409_138289992.shtml
下面写一下自己的实践:
首先可以创建一个空工程,然后再工程属性---configuration properties---General---configuration type改为.lib,创建可执行工程默认情况下是.exe
然后,可以在这个工程中创建头文件和源文件,如:
chang.h:
int fun(int a, int b)
chang.cpp:
#include <iostream>
#include "chang01.h"
using namespace std;
int fun(int a, int b)
{
return a + b;
}
之后编译就会在工程文件夹下的Debug文件夹下生成以当前工程名命名的lib文件,这个会生成chang.lib。
到这里静态链接库文件制作完毕。
下面来说明使用:
创建一个要使用这个库的工程如libtest
第一种方法:
把这个库拷贝到工程目录下,(最好拷贝到vs编译器可以找到的目录下,这个路径在tools---options---projects and soulutions---show libraray的目录下,至于这些目录如何查看,在以前的博客中有相关的文章,这样可以方便编译器编译时候查找到这个库文件)
之后把库头文件拷贝到当前目录下
在libtest的实现文件中,首先包含这个头文件,然后使用pragma指令指明链接库chang.lib,
然后再工程中使用这个函数中的库就可以了,源文件如下:
#include <iostream>
#include "chang.h"
using namespace std;
#pragma comment(lib,"chang.lib")
void main()
{
cout << fun(2,3) << endl;
}
之后运行就可以了
第二种方法:
这个库文件可以在任意路径下,首先在tools---options---projects and soulutions---show libraray目录下添加这个库文件所在的目录
然后再在工程属性---configuration properties---Linker---Addtional library directories下添加这个库文件所在的目录
在工程属性---configuration properties---Linker---Input---Addtional dependencies添加要使用的库的名字,现在这个就是chang.lib
之后把库文件的头文件拷贝到libtest工程的源文件文件夹下
最后在源文件中就可以不使用pragma指令了,源文件如下:
#include <iostream>
#include "chang.h"
using namespace std;
void main()
{
cout << fun(2,3) << endl;
}
最后编译运行即可
一些小发现:
当不把头文件拷贝到libtest的时候,直接包含chang.h头文件是不可以的,报找不到头文件
当不包含头文件的时候,直接使用这个库是不可以的,报错是找不到fun函数,
然后当不拷贝头文件到libtest下,而只是在libtest的源文件中进行int fun声明,则可以正常运行;如下:
#include <iostream>
#include "chang.h"
using namespace std;
#pragma comment(lib,"chang.lib")
int fun(int a, int b);
void main()
{
cout << fun(2,3) << endl;
}
当在libtest下重新实现该函数的时候,会运行重新实现的函数,如下:
#include <iostream>
#include "chang.h"
using namespace std;
#pragma comment(lib,"chang.lib")
int fun(int a, int b);
int fun(int a, int b)
{
return a - b;
}
void main()
{
cout << fun(2,3) << endl;
}
有这些现象推测:lib库文件只有函数的二进制实现,而不包含函数的声明,头文件等,
使用的时候也只需要把库链接进来,然后对库中的文件进行完全相同的声明,就可以直接调用库中的文件了,函数名只是索引
但是重新实现后就会运行这个版本,说明执行时候有一定的链接顺序
所以,还是按照一般的做法,把库文件的头文件拷贝过来就好了,只是个人一些推测,还请看到这篇文章的高人指点,呵呵~~
- vs下制作和使用.lib静态库
- vs如何创建和使用lib静态库
- vs如何创建和使用lib静态库文件
- 关于VS环境下制作和使用静态库和动态库
- 关于VS环境下制作和使用静态库和动态库
- Windows静态库和动态库的创建和使用 (lib vs dll)
- Windows静态库和动态库的创建和使用 (lib vs dll)
- VS 环境下生成静态lib库及调用方法
- VS2013下制作和使用静态库和动态库
- Linux下静态库,动态库的制作和使用
- vs使用lib库
- 创建和使用lib静态库
- [DLL]创建和使用静态库Lib
- 创建和使用静态库(.lib)
- VS2013下静态链接库(lib)和动态链接库(dll)的生成与使用
- windows环境下静态库的生成和使用 (.lib文件)
- VS: 如何导入静态LIB库
- VS 加入静态库(.lib)
- Flex Builder 编译老出现 file not found 的错误
- 更改c++私有变量的方法
- C++中的头文件
- linux定时运行命令脚本——crontab
- C++ Peimer 第2章-变量和基本类型习题答案
- vs下制作和使用.lib静态库
- CSS样式表成功减肥
- 精神状态自我调节
- 卸载Apache2的几个命令
- 5步让你的CSS样式表成功减肥
- Android NDK & JNI
- k_eckel's book lists 个人认为是目前最完善的C++及相关领域的书架
- 开战篇!
- SDK Platform Tools component is missing!