Chinaunix首页 | 论坛 | 博客
  • 博客访问: 263206
  • 博文数量: 71
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 920
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-16 13:07
个人简介

我喜欢蓝天,也喜欢雨天。

文章分类

全部博文(71)

文章存档

2014年(14)

2013年(57)

分类: Windows平台

2013-09-04 16:01:04

 

一、创建动态链接库项目:

1、打开Microsoft Visual Studio 2010,选择File->New->Project

2、在New Project中选择Installed Templates->Visual C++->Win32

3、选择Win32 Console Application,设置名称:simpledll,设置解决方案名:zdddll

4、单击OK,在出现的Win32 Application WizardOverview对话框中点击Next

5、在Application Settings中,选择Application type下的DLL

6、勾选Additional options下的Empty project

7、单击Finish创建项目。

向动态链接库添加类:

1、添加新类头文件。右键单击simpledll项目,Add->New Item,选择Header File(.h),设置名称为simpledll,单击Add

2、添加新类源文件。右键单击simpledll项目,Add->New Item,选择C++ File(.cpp),设置名称为simpledll,单击Add

3、为新类添加内容。内容如下:

头文件simpledll.h

点击(此处)折叠或打开

  1. //------------------ simpledll.h ----------------

  2. #pragma once;

  3. //该宏完成在dll项目内部使用__declspec(dllexport)导出
  4. //在dll项目外部使用时,用__declspec(dllimport)导入
  5. //宏DLL_IMPLEMENT在simpledll.cpp中定义
  6. #ifdef DLL_IMPLEMENT
  7. #define DLL_API __declspec(dllexport)
  8. #else
  9. #define DLL_API __declspec(dllimport)
  10. #endif

  11. namespace zdd
  12. {
  13.     //导出类
  14.     class DLL_API SimpleDll
  15.     {
  16.     public:
  17.         SimpleDll();
  18.         ~SimpleDll();

  19.         int add(int x, int y); //简单方法
  20.     };
  21. }

 

源文件simpledll.cpp:

点击(此处)折叠或打开

  1. //------------------ simpledll.cpp ----------------
  2. //注意此处的宏定义需要写在#include "simpledll.h"之前
  3. //以完成在dll项目内部使用__declspec(dllexport)导出
  4. //在dll项目外部使用时,用__declspec(dllimport)导入
  5. #define DLL_IMPLEMENT
  6. #include "simpledll.h"
  7. namespace zdd
  8. {
  9.     SimpleDll::SimpleDll()
  10.     {
  11.     }
  12.     SimpleDll::~SimpleDll()
  13.     {
  14.     }
  15.     int SimpleDll::add(int x, int y)
  16.     {
  17.         return x+y;
  18.     }
  19. }

4、完成后点击Build->Build Solution,生成解决方案。可在~zdddll\Debug下查看生成的simpledll.libsimpledll.dll.文件。

二、创建引用动态链接库的应用程序:

1、选择File->New->Project。 

2、在New Project中选择Installed Templates->Visual C++->Win32

3、选择Win32 Console Application,设置名称:usesimpledll。选择Add to solution

4、单击OK,在出现的Win32 Application WizardOverview对话框中点击Next

5、在Application Settings中,选择Application type下的Console application

6、取消Additional options下的Precompiled header,勾选Empty project

7、单击Finish创建项目。

在控制台应用程序中使用类库的功能:

1、为控制台应用程序添加main.cpp。右键单击usesimpledll项目,Add->New Item,选择C++ File(.cpp),设置名称为main,单击Add

2、为main.cpp添加内容。如下所示:


点击(此处)折叠或打开

  1. //------------------ main.cpp -------------------
  2. #include "simpledll.h"
  3. using namespace zdd;

  4. #include <iostream>
  5. using namespace std;

  6. int main(char argc, char**argv)
  7. {
  8.     //
  9.     cout << "----------------------" <<endl;
  10.     SimpleDll sd;
  11.     cout << "sd.add: 3+5=" << sd.add(3, 5)<<endl;
  12.     cout << "sd.getConst(): "<<sd.getConst()<<endl;

  13.     SimpleDll *psd = new SimpleDll;
  14.     cout << "psd->add: 5+5=" << psd->add(5, 5)<<endl;
  15.     cout << "psd->getConst(): "<<endl;

  16.     cout << "----------------------" <<endl;
  17.     cout << "please press Enter exit."<<endl;
  18.     getchar();
  19.     return 0;
  20. }

3.在工程目录下建立Include目录,将动态链接库的那个头文件拷入。建立lib目录,将生成的那个.lib文件拷入。然后将生成的.dll文件拷入生成.exe文件的那个目录(一般是项目下的Debug下)。

4.程序中要包含那个头文件,注意路径要写正确。Include ..\Include\simpledll.h,或者右击工程,property,Configuration Propertiesc/c++General,Additional Include Directories中加入“;..\Include”,这样包含头文件时直接写头文件名,不需要考虑路径,因为当在工程目录下找不到文件时,就会从添加的那个目录查找文件。

5.添加.lib文件 

右击工程,property,Configuration PropertiesLinkerInput,在Additional Dependencies中添加.lib路径(一般是..\lib\xxxxx.lib)。


另外,
lib引用有两种方法:

1.#pragma comment(lib,opengl32.lib)

2.选择project > XX properties… –> linker > Input > Additional dependences,在其中加入lib文件名即可。


总结:

1.首先建立生成DLL的工程,生成.dll.lib文件。需要用到的还有.h文件。

2.建立应用DLL的工程。要包含头文件,把3个文件拷入相应的目录。

3.在附加依赖项Additional Dependencies中添加.lib的路径,告诉程序调用的外部导入函数的地址,否则找不到函数,链接出错。



阅读(1616) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~