DLL的创建和使用(含代码)

时间:2024-03-21 21:50:53

转载至:http://blog.csdn.net/twtian01/article/details/38927187

初次接触DLL文件的使用,在网上找了许多教程自己学习,多谢网上的许多大神的帖子。现在将这些总结一下写出来也是对自己的一个提高

1.DLL创建方法

1.        打开VS2010,点击文件->新建->项目

DLL的创建和使用(含代码)

2.        点击已安装模版->Visual C++->Win32项目,填写名称及解决方案名称

DLL的创建和使用(含代码)

3.        点击下一步,应用程序选择DLL,附加选项选择空项目

DLL的创建和使用(含代码)

4.        将生成一个空工程,在头文件添加新建项选择头文件(.h),输入名称testdll,源文件选择添加新建项选择C++文件(.CPP),输入名称testdll

5.        在testdll.h文件填写下面代码:

namespace MathFuncs

{

    class MyMathFuncs

    {

    public:

        __declspec(dllexport)double Add(doublea,double b);

        __declspec(dllexport)double Subtract(doublea,double b);

        __declspec(dllexport)double Multiply(doublea,double b);

        __declspec(dllexport)double Divide(doublea,double b);

    };

}

或者

namespace MathFuncs

{

    class __declspec(dllexport) MyMathFuncs

    {

    public:

        double Add(double a,double b);

        double Subtract(doublea,double b);

        double Multiply(doublea,double b);

        double Divide(doublea,double b);

    };

}

上述两种方式的区别在于第一种可以指定类中那些成员函数可以被其他程序调用,第二种方式类中所有成员函数都可以被其他程序调用

6.        在testdll.cpp文件里面添加如下代码:

// testdll.cpp

#include "testdll.h"

namespace MathFuncs

{

    double MyMathFuncs::Add(doublea,double b)

    {

        return a + b;

    }

 

    double MyMathFuncs::Subtract(doublea,double b)

    {

        return a - b;

    }

 

    double MyMathFuncs::Multiply(doublea,double b)

    {

        return a * b;

    }

 

    double MyMathFuncs::Divide(doublea,double b)

    {

        return a / b;

    }

}

7.        点击生成解决方案,转到工程目录下可以看到在Debug目录下有testdll.lib和testdll.dll两个文件,在其他项目里面我们要用到的油三个文件testdll.lib,testdll.dll和testdll.h

 DLL的创建和使用(含代码)

 

2.DLL使用

1.        新建一个空工程,添加源文件mian.cpp,在里面添加如下代码:

#include <stdio.h>

#include <Windows.h>

#include "testdll.h"

using namespace MathFuncs;

void main()

{

    MyMathFuncsst;

    double c=st.Add(3.0,5.0);

    printf("%f\n",c);

    system("pause");

}

或者

#include <stdio.h>

#include <Windows.h>

#include "testdll.h"

 

void main()

{

    double c=MathFuncs::MyMathFuncs::Add(3.0,5.0);

    printf("%d\n",c);

    system("pause");

}

第二种方法需要在类的定义中使用静态函数

static __declspec(dllexport)doubleAdd(double a,doubleb);

否则需要实例化一个类的对象再调用类中函数

2.        将testdll.lib和testdll.h放到工程默认目录下,即CPP文件所在的目录,点击项目->属性->配置属性->链接器->输入->附加依赖相,填写testdll.lib,若把testdll.lib和testdll.h放到Debug目录下,则填写..\Debug\testdll.lib

DLL的创建和使用(含代码)

DLL的创建和使用(含代码)

3.        将testdll.dll放入cpp文件所在位置或者Debug目录下都可以,若把testdll.h文件放在其他地方则在头文件地方手动添加进来即可,或者点击项目->属性->配置属性->C/C++->常规->附加包含目录,添加头文件所在目录

DLL的创建和使用(含代码)

注:若提示DLL文件读取错误而路径包含等都没有问题,则可以删除附加依赖项,在程序头加入#pragmacomment(lib , "testdll.lib")即可。