创建动态链接库Dll及测试用例

我们就从新建工程开始:

  (1)打开VS2010,文件->新建->项目,选择Win32项目

  (2)工程名叫做“Win32Dll”,在点击确定后弹出的对话框中选择Dll这一项,并勾选导入符号选项,点击完成

  这样一个创建Dll的工程就做好了,其实Dll的编写就是类的一种封装,格式完全可以按照C++中类的写法去完成,下面我改写了另一个老兄的例子:

  1.在Win32Dll.h中的类CWin32Dll 里添加:


class WIN32DLL_API CWin32Dll {

public:

CWin32Dll(void);

// TODO: 在此添加您的方法。

private:

int m_nVar;

std::string m_strVar;

public:

void set(int );

void printfValue();

void set_str(const std::string &);

void printf_str();

};

extern WIN32DLL_API int nWin32Dll;

//这里尤其要注意,当你想创建一个非成员函数时

WIN32DLL_API void printfValue(const int &);

WIN32DLL_API int fnWin32Dll(void);

  2.以上类中尤其要注意非成员函数的的声明,之后便是在Win32Dll.cpp中的函数实现


CWin32Dll::CWin32Dll()

{

return;

}

void CWin32Dll::set(int v)

{

m_nVar = v;

}

void CWin32Dll::printfValue()

{

std::cout << m_nVar << std::endl;

}

void CWin32Dll::set_str(const std::string &str)

{

m_strVar = str;

}

void CWin32Dll::printf_str()

{

std::cout << m_strVar << std::endl;

}

void printfValue(const int &v)

{

std::cout << v << std::endl;

}

  以上工作都做完后,进行编译链接,在工程Debug下就可以看到我们生成的.Dll文件和.lib文件

 3.在同一个解决方案里新建一个Win32控制台项目名叫TestWin32Dll

  在这里我们要用到我们在上个工程中生成的库文件

  如下是TestWin32Dll.cpp中的实现:


#include "stdafx.h"

#include "../Win32Dll/Win32Dll.h"

#pragma comment(lib,"D:/My Documents/Visual Studio 2010/Projects/Win32Dll/Debug/Win32Dll.lib")

int _tmain(int argc, _TCHAR* argv[])

{

int v = 12;

printfValue(v);

CWin32Dll obj;

obj.set(v);

obj.printfValue();

CWin32Dll obj2;

obj2.set_str("haha");

obj2.printf_str();

CWin32Dll obj3;

obj3.set_str("nono");

obj3.printf_str();

return 0;

}

  运行一下试试!

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-03 12:02:26

创建动态链接库Dll及测试用例的相关文章

Windows &amp;amp; Eclipse &amp;amp; CDT &amp;amp; MinGW 创建动态链接库(dll)

Eclipse CDT + MinGW 创建动态链接库(dll). 1. 创建动态链接库的工程 选择: Shared Library: Empty Project  -> MinGW GCC 2. 创建导出函数 /* * say.cpp * * Created on: 2014年4月16日 * Author: Spike */ #include <iostream> #include <string> void say(std::string _name) { std::co

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

本文将创建一个简单的动态链接库,并编写一个控制台应用程序使用该动态链接库,该动态链接库为"JAVA调用动态链接库DLL之JNative学习"中使用的DLL,只是项目及文件名称不同. 创建动态链接库项目:1.打开Microsoft Visual Studio 2010,选择文件->新建->项目. 2.在新建项目窗口中选择其他语言->Visual C++->Win32. 3.选择Win32 项目,设置名称:simpleDLL,设置解决方案名:simpleDLL.4.

JAVA调用动态链接库DLL之JNative学习

JAVA调用动态链接库DLL的方法有:JNI(Java Native Interface),JInvoke,JNative(Java to native interface),JNI是JAVA自身提供的方法:JInvoke从何而来不得而知,好像还需要注册付费的,64位的JDK.JIR环境下运行不了,在VMware下安装的WindowsXP下同样有问题:JNative是开源的,但相关资料文档也特别的少,好像已经停止更新了.JNative源码地址:http://jnative.cvs.sourcef

什么是动态链接库(DLL)以及常见问题

动态|链接|问题 概要 本文说明什么是动态链接库 (DLL) 以及在使用 DLL 时可能发生的各种问题. 然后,本文说明在开发您自己的 DLL 时应该考虑的一些高级问题.在说明什么是 DLL 的过程中,本文将说明动态链接方法.DLL 依赖性.DLL 入口点.导出 DLL 函数以及 DLL 故障排除工具. 本文最后将从较高的层次对 DLL 与 Microsoft .NET Framework 程序集作一比较. 简介 对于"适用于"一节中列出的 Microsoft Windows 操作系统

怎样在C++ Builder中创建使用DLL

动态链接库(DLL)是Windows编程常遇到的编程方法,下面我就介绍一下在BCB (C++ Builder下简称BCB) 中如何创建使用DLL和一些技巧. 一.创建: 使用BCB File|NEW建立一个新的DLL工程,并保存好文件BCB,生成一个DLL的程序框架. 1.DllEntryPoint函数为一个入口方法,如果使用者在DLL被系统初始化或者注销时被调用,用来写入对DLL的初始化程序和卸载程序:参数:hinst用来指示DLL的基地址:reason用来指示DLL的调用方式,用于区别多线程

动态链接库dll,静态链接库lib, 导入库lib

转载地址:http://www.cnblogs.com/chio/archive/2008/08/05/1261296.html   目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称"静态库"),另一种为动态连接库(DLL,以下简称"动态库")的导入库(Import Libary,以下简称"导入库"). 静态库是一个或者多个obj文件的打包,所以有人干脆把从obj文件生成lib的过程称为Archive,即合并到一

深入浅出Visual C++动态链接库(Dll)编程

文章作者:宋宝华信息来源:天极网 原始连接: http://soft.yesky.com/lesson/318/2166818.shtml?412 动态链接库(DLL)是Windows系统的核心,也是COM技术的基础,因此突破动态链接库一直是技术人员的攻坚目标,本期专题将由浅入深的介绍动态链接库的基础慨念.分类.实现和应用. 基础慨念 1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量.函数

VC程序在Win32环境下动态链接库(DLL)编程原理_C 语言

本文详细讲述了VC程序在Win32环境下动态链接库(DLL)编程原理.分享给大家供大家参考.具体分析如下: 一般比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作.其中可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用.在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费:另一个缺点是

创建Win32 DLL,并在C#里面调用

创建 这是三篇网上收集的技术文章的合集,分别讲解了如何创建Win32 DLL,然后如何在C#里面调用这个DLL的教程. 首先是创建Win32 DLL的文章.讲解这个的文章到处都有,这里给出一篇我看过的:http://www.flipcode.com/articles/article_creatingdlls.shtml.Win32 DLL的创建其实在Visual Studio里面已经给出了比较好的模板,只是需要注意的,有些XXX_API宏并没有把extern "C"加进去,这样会造成在