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

来源:互联网 发布:淘宝怎么刷销量1000笔 编辑:程序博客网 时间:2024/05/22 02:22
一、创建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 CnBlogsDllEXPORTSShowStudentInfo

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方法中添加如下代码:

复制代码
// 加载DLLHINSTANCE 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、编译运行。运行结构如下图:

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 海信电视怎么安装第三方软件怎么办 网上买票的时候不想用学生票怎么办 南方公园完整破碎讲话嘴不动怎么办 同一个安全员被锁在两个项目怎么办 家长拖欠家教老师的课时费怎么办 合同没到期房东不退押金怎么办 租房合同没到期房东要违约怎么办 档案存放费交了一年的延期怎么办 天津房子卖了户口没地方迁怎么办 中国到美国读计算机硕士签证怎么办 在江苏大学去德国读研怎么办? 宿舍上下铺的床一动就响怎么办 自助取款机存款忘打印了凭条怎么办 高一新生跨省转学籍怎么办 网上买票不小心买成了学生票怎么办 做横幅标语字打出来老是歪的怎么办 创业板股票暂停上市后钱怎么办 新股东入股公司之前的亏损怎么办 目前公司账面亏损有人要入股怎么办 土地确权后没有土地的人怎么办 老板不发工资跑路了怎么办 别人登录了我的美团账号怎么办 月嫂家政公司快坚持不下去了怎么办 华硕飞马4a手机发热怎么办 超级必发指数手机页面没曲线怎么办 唐小僧理财暴雷了投资者该怎么办 教师资格证面试准考证号忘了怎么办 初中学校说处分不给毕业证怎么办? 自动档一键打火的车没电了怎么办 物流代收货款一直拿不到钱怎么办 丰巢快递柜收不到验证码怎么办 拼多多三级惩罚下架3天怎么办 在万达买的衣服穿一次烂了怎么办 内蒙古对于没有地的农民改怎么办 微信号码重新注册后回零钱怎么办 安卓系统文件苹果手机打不开怎么办 课题必须发表论文吗?查重怎么办 学信网学籍绑定输错5次怎么办 大学学校图书馆借的书丢了怎么办 借阅机里的图书不显示书名怎么办 苹果6s锁屏密码忘了怎么办