OS基础:动态链接库(二)
1.vc6.0新建工程MFC AppWizard[dll]工程 命名LptMfcDll1
2.在lptMfcDll1.h添加函数名声明
添加的代码:
//lptAddBegin void lptMfcTest1(void);
void lptMfcTest2(void); //lptAddEnd
3.在lptMfcDll1.cpp添加函数体的定义
添加的代码:
//lptAddBegin
void lptMfcTest1()
{
::AfxMessageBox("MFC Dll 第一个测试函数! ");
} void lptMfcTest2()
{
::AfxMessageBox("MFC Dll 第二个测试函数! ");
} //lptAddEnd
4.在lptMfcDll1.def的EXPORTS中添加
5.编译执行,动态库生成
下面是测试
1.新建测试工程MFC AppWizard[exe]工程 命名:LptMfcTest1
选择
其他全部按照默认
2.到了Dialog界面后新建两个button
3.右键点击设置button1的属性:
ID:IDC_lptMfcBtn1 (自己命名) 标题:测试第一个函数
button2同样设置
4.双击button添加函数
函数体内实现test1和test2函数的调用
5.在该cpp头文件处添加库的调用
其中#pragma comment(lib,"LptMfcDll1.lib")这一句的作作用就是把该库导入,也可以在工程设置处添加这个库实现相同功能
同样的 别忘了动态链接库(一)的做法,把lptMfcDll1.h、lptMfcDll1.dll、lptMfcDll1.lib复制在lptMfcTest1文件夹下。
6.编译执行 点击button1
可以看到,已经成功调用了lptMfcDll1.lib里的函数
OS基础:动态链接库(二)的更多相关文章
- day21-多并发编程基础(二)
今日要整理的内容有 1. 操作系统中线程理论 2.python中的GIL锁 3.线程在python中的使用 开始今日份整理 1. 操作系统中线程理论 1.1 线程引入背景 之前我们已经了解了操作系统中 ...
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- Bootstrap <基础十二>下拉菜单(Dropdowns)
Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 ...
- RequireJS基础(二)
上一篇是把整个jQuery库作为一个模块.这篇来写一个自己的模块:选择器. 为演示方便这里仅实现常用的三种选择器id,className,attribute. RequireJS使用define来定义 ...
- Servlet基础(二) Servlet的生命周期
Servlet基础(二) Servlet的生命周期 Servlet的生命周期可以分为三个阶段: 1.初始化阶段 2.响应客户请求阶段 3.终止阶段 Servlet的初始化阶段 在下列时刻Servlet ...
- 好好写,好好干-PHP基础(二)
hi 好久没写,昨儿一写,感觉还是有人看的,至少是有一两个评论的~~好好干! 每天需要坚持的就那么4件事儿:写这个,学一点法语,看会儿书,锻炼.单身狗也有好处. 1.PHP 一.PHP基础(二) 1. ...
- php基础篇-二维数组排序 array_multisort
原文:php基础篇-二维数组排序 array_multisort 对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下: array_multisort(a ...
- MySQL基础(二)——DDL语句
MySQL基础(二)--DDL语句 1.什么是DDL语句,以及DDL语句的作用 DDL语句时操作数据库对象的语句,这些操作包括create.drop.alter(创建.删除.修改)数据库对象. 2.基 ...
- Python 基础语法(二)
Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...
- JavaScript基础笔记二
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
随机推荐
- UI设计师经常去的五个网站
1.站酷 站酷(ZCOOL),中国人气设计师互动平台.深耕设计领域十年,站酷聚集了470万优秀设计师.摄影师.插画师.艺术家.创意人,设计创意群体中具有较高的影响力与号召力. 2.花瓣 花瓣网, ...
- [Robot Framework] Robot Framework怎么调试?
Robot Framework怎么debug? 在eclipse里面安装一个插件,就可以debug robot framework的project. 插件下载地址: https://github.co ...
- zookeeper相关
1.zookeeper应用:集群节点间的数据同步(资源管理),分布式锁(主要是利用客户端在一个会话中在zookeeper中创建一个znode节点,然后再去执行自己的业务代码,比如去更新数据库,其他客户 ...
- callable与runable区别?switch char ?sql只查是否存在,sql复制表 ?反射 ? spring mvc 和spring 上下文区别?
中化技术部 2018.4.16 1. callable 和 thread 区别 实现Callable接口的线程能返回执行结果,而Runable 不可以 . Callable 的call方法允许抛出异 ...
- Homebrew -- mac 缺失包补充工具
https://brew.sh/index_zh-cn.htmlhttps://brew.sh/ 非root权限下运行 # github 源代码 https://github.com/Homebrew ...
- django 静态文件
django中的静态文件,如图片,css样式jquery等等 在url最下面加上 from django.conf.urls.static import staticfrom django.conf ...
- java struts2 的 文件下载
jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...
- php结合layui实现前台加后台操作
一:前台加载出前端页面: HTML: lay-data="{width:800,height:400, url:'data.php', page:true, id:'test'} js: l ...
- c#泛型与其他语言的对比(深入理解c#)
1.同c++模板的对比: c++模板有点像是发展到极致的宏.他们非常强大,但代价就是代码膨胀和不易理解. 在c++中使用一个模板时,会为那一套特定的模板实参编译代码,好在模板实参本来就在源代码中一样. ...
- Javascript php 异常捕获
JavaScript try 语句允许我们定义在执行时进行错误测试的代码块. catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块. JavaScript 语句 try 和 cat ...