VS2010 C++创建、调用DLL图解

一、创建DLL

        1、新建项目: Visual C++ -> Win32项目,名称:CnBlogsDLL

点击完成,进入下一步。

注意不要点完了按钮,点击下一步。

选中DLL单选框,然后点击完成。这样DLL项目的创建工作就基本结束了。

        2、新建头文件:CommStruts.h

复制代码
#pragma once

// 学生构造体
typedef struct {
    // 学生名称    
    char Name[8];
    // 学生年齢
    int Age; 
} Student;
复制代码

        3,新建源文件:ShowStudentInfo.cpp

复制代码
#include "StdAfx.h"
#include <iostream>
#include " CommStruts.h "

using namespace std;

// 输出学生信息
int ShowStudentInfo(Student * stud){
    // 输出学生姓名
    cout<<"Name : "<<stud->Name<<endl;
    // 输出学生年龄
    cout<<"Age : "<<stud->Age<<endl;
    // 返回学生年龄
    return stud->Age;
}
复制代码

        4、新建模块定义文件:

点击追加,然后输入如下代码:

LIBRARY CnBlogsDll
EXPORTS

ShowStudentInfo

LIBRARY是模块定义文件必须的一部分,它告诉链接器(linker)如何命名你的DLL。EXPORTS也是模块定义文件必须的一部分,这部分使得该函数可以被其它应用程序访问到并且它创建一个导入库。当你生成这个项目时,不仅是一个.dll文件被创建,而且一个文件扩展名为.lib的导出库也会被创建。EXPORTS后面列出要导出函数的名称。可以在.def文件中的导出函数名后加@n,表示要导出函数的序号为n(在进行函数调用时,这个序号将发挥其作用)。

        5、最后编译,生成CnBlogsDLL.dll和CnBlogsDLL.lib文件 

 

  二、调用DLL

        1、创建CLR控制台应用程序:ExecutDll。

当然,创建其他的应用程序也是可以的,这里只是举例说明。

        2、添加已有项目CommStruts.h,此文件是上面个创建DLL是建立的构造体文件。

        3、在main方法中添加如下代码:

复制代码
// 加载DLL
HINSTANCE hInstance = LoadLibrary("CnBlogsDLL.dll");
// 定义显示学生信息的方法
typedef int (*ShowStudentInfo)(Student * );
    
// 取得DLL中先生学生信息的方法,并映射成本地的方法
ShowStudentInfo showStudentInfo = (ShowStudentInfo)GetProcAddress(hInstance, "ShowStudentInfo");
// 创建学生信息
Student stud;
// 初始化
memset(&stud, 0x00, sizeof(Student));
stud.Age = 100;
memcpy(stud.Name,"WGC",sizeof(stud.Name));
// 执行显示学生信息的方法
int age = showStudentInfo(&stud);
复制代码

            这里使用的是动态加载DLL的方法。

        4、将编译完成的CnBlogsDLL.dll拷贝到ExecutDll工程的Debug目录下。如果使用静态加载DLL的方法,还需要拷贝CnBlogsDLL.lib文件。

        5、编译运行。运行结构如下图:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值