码迷,mamicode.com
首页 > Windows程序 > 详细

Window中创建和使用静态库与动态库

时间:2015-02-24 23:18:34      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

一、静态库的创建和使用

1. 静态库的创建

(1) 在VS2013中选择菜单->File->New->Project,选择Visual C++ ->Win32选项,然后点击Win32 Project图标,选择Win32 Application Wizard,选择Application type下的Static library选项。工程名字为TestStaticLib。

(2)在Solution Explorer的Header Files下新建一个test_header.h头文件

 1 #ifndef TEST_HEADER_H_
 2 #define TEST_HEADER_H_
 3 
 4 #ifdef _WIN32
 5 #ifdef _LIB
 6 #define DECLSPEC __declspec(dllexport)
 7 #else
 8 #define DECLSPEC __declspec(dllimport)
 9 #endif
10 #else
11 #define DECLSPEC
12 #endif
13 
14 #endif

__declspec修饰符仅在Windows平台下有效。
__declspec(dllexport)的作用是将当前函数或者类导出,以便可以从DLL中调用。

__declspec(dllimport)的作用是在应用程序中可以使用导出的DLL函数或者类。

在VS2013编译器中新建一个Static library工程的时候,预定义了_LIB宏,所以上面的代码中

#define DECLSPEC __declspec(dllexport)是有效的。

(3) 在Solution Explorer的Header Files下新建一个Source.h文件

 1 #ifndef SOURCE_H_
 2 #define SOURCE_H_
 3 #include "test_header.h"
 4 
 5 DECLSPEC int MyFunction(int a,int b);
 6 
 7 class DECLSPEC MyClass
 8 {
 9 public:
10     MyClass(int a, int b) : m_a(a), m_b(b){}
11     ~MyClass();
12     int add();
13 private:
14     int m_a;
15     int m_b;
16 };
17 #endif

(4) 在Solution Explorer的Source Files文件夹下新建一个Source.cpp文件

 1 #include "Source.h"
 2 
 3 int  MyFunction(int a,int b)
 4 {
 5     return a + b;
 6 }
 7 
 8 MyClass::~MyClass()
 9 {
10 }
11 
12 int MyClass::add()
13 {
14     return m_a + m_b;
15 }

(5) 编译工程,在工程目录的Debug文件夹下会生成TetsStaticLib.lib静态库文件。
2. 静态库的使用

(1)新建一个Win32 Console工程,名字为TestLib。

设置TestLib的工程属性

①Configuration Properties->C/C++->General->Additional Include Directories

D:\Program\C++Pro\TestStaticLib\TestStaticLib

②Configuration Properties->Linker->General->Additional Library Directories

D:\Program\C++Pro\TestStaticLib\Debug

③Configuration Properties->Linker->Input->Additional Dependencies

TestStaticLib.lib

(2)添加如下测试代码

 1 #include "stdafx.h"
 2 #include "Source.h"
 3 #include <iostream>
 4 using namespace std;
 5 
 6 
 7 int _tmain(int argc, _TCHAR* argv[])
 8 {
 9     int c = MyFunction(1, 2);
10     cout << c << endl;
11 
12     MyClass cla(2, 4);
13     cout << cla.add() << endl;
14     system("pause");
15     return 0;
16 }

(3) 编译运行生成的TestLib.exe,可以看到程序结果,这时将TestLib.exe拷贝到任意文件夹也可以运行。

 

Window中创建和使用静态库与动态库

标签:

原文地址:http://www.cnblogs.com/elitiwin/p/4298994.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!