一、用C++创建动态链接库项目: 
1、打开Microsoft Visual Studio 2010,选择File->New->Project。 
2、在NewProject中选择Installed Templates->Visual C++->Win32。 
3、选择Win32 Console Application,设置名称:simpledll,设置解决方案名:zdddll。 
4、单击OK,在出现的Win32 Application Wizard的Overview对话框中点击Next。 
5、在ApplicationSettings中,选择Application type下的DLL。 
6、勾选Additional options下的Emptyproject。 
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:

<span style="font-size:14px;">//------------------ simpledll.h ----------------
#pragma once; //编译器相关的,保证头文件只被编译一次。 //该宏完成在dll项目内部使用_declspec(dllexport)导出
//在dll项目外部使用时,用_declspec(dllimport)导入
//宏DLL_IMPLEMENT在simpledll.cpp中定义
#ifdef DLL_IMPLEMENT
#define DLL_API _declspec(dllexport)
#else
#define DLL_API _declspec(dllimport)
#endif namespace zdd
{ //导出类
class DLL_API SimpleDll
{
public:
SimpleDll();
~SimpleDll();
int add(int x, int y); //简单方法
};
}</span>

源文件simpledll.cpp:

<span style="font-size:14px;">//------------------ simpledll.cpp----------------
//注意此处的宏定义需要写在#include "simpledll.h"之前
//以完成在dll项目内部使用__declspec(dllexport)导出
//在dll项目外部使用时,用__declspec(dllimport)导入
#define DLL_IMPLEMENT
#include "simpledll.h"
namespace zdd
{
SimpleDll::SimpleDll()
{
}
SimpleDll::~SimpleDll()
{
}
int SimpleDll::add(int x, int y)
{
return x+y;
} } </span>

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

二、创建引用动态链接库的C++应用程序: 
1、选择File->New->Project。 
2、在NewProject中选择Installed Templates->Visual C++->Win32。 
3、选择Win32 Console Application,设置名称:usesimpledll。选择Add to solution。 
4、单击OK,在出现的Win32 Application Wizard的Overview对话框中点击Next。 
5、在ApplicationSettings中,选择Application type下的Consoleapplication。 
6、取消Additional options下的Precompiledheader,勾选Empty project。 
7、单击Finish创建项目。

在控制台应用程序中使用类库的功能: 
1、为控制台应用程序添加main.cpp。右键单击usesimpledll项目,Add->New Item,选择C++ File(.cpp),设置名称为main,单击Add。 
2、为main.cpp添加内容。如下所示:

<span style="font-size:14px;">//------------------ main.cpp -------------------
#include "..\include\simpledll.h" //将生成的simpledll.h放于新建的include目录下
using namespace zdd;
#include <iostream>
using namespace std; int main(char argc, char **argv)
{
cout << "----------------------"<<endl;
SimpleDll sd;
cout << "sd.add: 3+5=" <<sd.add(3, 5)<<endl; SimpleDll *psd = new SimpleDll;
cout << "psd->add: 5+5="<< psd->add(5, 5)<<endl; cout << "----------------------"<<endl;
cout << "please press Enterexit."<<endl;
getchar();
return 0;
} </span>

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

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

5.添加.lib文件 
右击工程,property,Configuration Properties,Linker,Input,在AdditionalDependencies中编辑,添加.lib路径(一般是..\lib\xxxxx.lib)。

另外,lib引用有两种方法: 
1.#pragma comment(lib,”opengl32.lib”) 
2.选择project–> XX properties… –> linker –> Input –> Additional dependences,在其中加入lib文件名即可。

总结: 
首先建立生成DLL的工程,生成.dll,.lib文件。需要用到的还有.h文件。 
建立应用DLL的工程。要包含头文件,把3个文件拷入相应的目录。 
在附加依赖项Additional Dependencies中添加.lib的路径,告诉程序调用的外部导入函数的地址,否则找不到函数,链接出错。

vs2010 C++创建和使用动态链接库(dll)的更多相关文章

  1. C# 创建和引入动态链接库dll文件

    一.创建动态链接库dll文件 新建 -> 项目->类库 名称为:dlltest 添加函数:消息框弹出消息 using System.Collections.Generic; using S ...

  2. vs2010创建和使用动态链接库(dll)

    本文将创建一个简单的动态链接库,并编写一个应用台控制程序使用该动态链接库,并提出了与实现相关的几个问题,供初学者交流. 本文包含以下内容: 创建动态链接库项目 向动态链接库添加类 创建引用动态链接库的 ...

  3. 创建一个动态链接库 (DLL),使用VS2010

    在本演练中,您将创建一个动态链接库 (DLL),其中包含可供其他应用程序使用的有用例程.使用 DLL 是一种重用代码的绝佳方式.您不必在自己创建的每个程序中重新实现这些例程,而只需对这些例程编写一次, ...

  4. 【转载】创建和使用动态链接库 (C++)

    原文:http://blog.csdn.net/handforcpp/article/details/3478254 也可参考MSDN: 演练:创建和使用动态链接库 (C++) 我们将创建的第一种类型 ...

  5. 演练:创建和使用动态链接库 (C++)

    我们将创建的第一种类型的库是动态链接库 (DLL). 使用 DLL 是一种重用代码的绝佳方式. 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它 ...

  6. VS2010创建动态链接库(DLL)的方法

    1.第一步创建WIN32项目,选择DLL 2.第二步,创建你自己的DLL CPP文件和头文件,下面以两个简单的加减法函数为例子导出 然后编译生成即可.DLL文件在Debug或Release目录中 .d ...

  7. VS2010编写动态链接库DLL及单元测试用例,调用DLL测试正确性

    转自:http://blog.csdn.net/testcs_dn/article/details/27237509 本文将创建一个简单的动态链接库,并编写一个控制台应用程序使用该动态链接库,该动态链 ...

  8. [原创]VS2010中创建动态链接库及其调用

    [原创]VS2010中创建动态链接库及其调用 一.创建动态链接库 在VS2010中创建动态链接库的步骤如下: 1)生成->编译->生成MyDll 二.调用 当调用DLL中的方法,程序编译产 ...

  9. VS2010编写动态链接库DLL和单元测试,转让DLL测试的正确性

    本文将创建一个简单的动态库-link,谱写控制台应用程序使用该动态链接库,该动态链接库为"JAVA调用动态链接库DLL之JNative学习"中使用的DLL,仅仅是项目及文件名不同. ...

随机推荐

  1. (转载)gcc & gdb & make 定义与区别

    gcc & gdb & make 定义与区别 GCC 通常所说的GCC是GUN Compiler Collection的简称,除了编译程序之外,它还含其他相关工具,所以它能把易于人类使 ...

  2. MVVM中轻松实现Command绑定任意事件的Command

    下面是“银光中国”(不错的WPF或SL网站)WPF学习教程中的一个连接, http://www.silverlightchina.net/html/study/WPF/2011/0715/9034.h ...

  3. PowerDesigner用法和技巧

    PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一.Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesign ...

  4. Java Object类的方法

    1. Java中所有的类都直接或者间接地继承自Object类.当没有显式地声名一个类的父类时,它会隐式地继承Object类. 2. Object类中定义了适合于任何Java对象的方法. String ...

  5. 原生javascript-无间缝滚动,封装

    目前支持的是竖向与横向滚动 http://lgy.1zwq.com/marScroll/ 现在分析下无间缝实现的基本思路(竖向例子): HTML结构: <div id="marScro ...

  6. VMware虚拟机创建安装之后不出现VMnet1和VMnet8虚拟网卡

    大家可能遇到过安装虚拟机之后,不出现这两张虚拟网卡,造成一系列的网络问题 VMware虚拟机无法将网络改为桥接状态 本人亲试可行的解决办法 首先把你之前安装的VMware虚拟机卸载,清理得一干二净: ...

  7. C#中使用GUID

    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可 ...

  8. elasticsearch实现网站搜索

    使用elasticsearch 实现网站搜索,可以支持商品搜索,筛选项过滤搜索 ,价格排序, 打分 筛选项聚合,还有其他综合排序 后续推出搜索人工干预排序,根据销量,好评率,售卖率 进行全方位的搜索实 ...

  9. LeetCode OJ:Search in Rotated Sorted Array II(翻转排序数组的查找)

    Follow up for "Search in Rotated Sorted Array":What if duplicates are allowed? Would this ...

  10. js的 style.width 取不到元素的宽度值

    以前一直用jquery的.width()方法来获取一个元素的当前的宽度.不管该元素是否设置了宽度,CSS样式是内联.外联or内嵌,都可用此方式获得元素当前的宽度. 今天想用原生JS想获取一个元素宽度时 ...