社区
黄强的课程社区_NO_2
C++动态链接库视频教程(Windows动态链接库)
帖子详情
DLL的入口DllMain函数
程序员乐逍遥
博客专家认证
2023-01-12 23:23:42
课时名称
课时知识点
DLL的入口DllMain函数
...全文
190
回复
打赏
收藏
DLL的入口DllMain函数
课时名称课时知识点DLL的入口DllMain函数
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
让易语言的
DLL
不依赖任何插件都能拥有完整的
入口
函数
(
Dll
Main
)
跟exe有个
main
或者Win
Main
入口
函数
一样,
DLL
也有一个
入口
函数
,就是
Dll
Main
。以“
Dll
Main
”为关键字,来看看MSDN帮助文档怎么介绍这个
函数
的。@绿色的可达鸭。
DLL
函数
查看器,查看
DLL
文件
入口
函数
DLL
函数
查看器,查看C语言写的
DLL
文件
入口
函数
DLL
的进入点
函数
Dll
Main
DLL
的进入点
函数
Dll
Main
DLL
创建与
函数
调用规则
详述
函数
调用规则及
DLL
创建, 但非细节,解释
DLL
的几种类型
VC++动态链接库(
DLL
)编程深入浅出,
DLL
编写教程 两篇
最简单的
dll
并不比c的helloworld难,只要一个
Dll
Main
函数
即可,包含objbase.h头文件(支持COM技术的一个头文件)。若你觉得这个头文件名字难记,那么用windows.H也可以。源代码如下:
dll
_nolib.cpp #include #include BOOL APIENTRY
Dll
Main
(HANDLE hModule, DWORD dwReason, void* lpReserved) { HANDLE g_hModule; switch(dwReason) { case
DLL
_PROCESS_ATTACH: cout<<"
Dll
is attached!"<
DLL_PROCESS_DETACH: cout<<"
Dll
is detached!"<
Dll
Main
是每个
dll
的
入口
函数
,如同c的
main
函数
一样。
Dll
Main
带有三个参数,hModule表示本
dll
的实例句柄(听不懂就不理它,写过windows程序的自然懂),dwReason表示
dll
当前所处的状态,例如
DLL
_PROCESS_ATTACH表示
dll
刚刚被加载到一个进程中,
DLL
_PROCESS_DETACH表示
dll
刚刚从一个进程中卸载。当然还有表示加载到线程中和从线程中卸载的状态,这里省略。最后一个参数是一个保留参数(目前和
dll
的一些状态相关,但是很少使用)。 从上面的程序可以看出,当
dll
被加载到一个进程中时,
dll
打印"
Dll
is attached!"语句;当
dll
从进程中卸载时,打印"
Dll
is detached!"语句。 编译
dll
需要以下两条命令: cl /c
dll
_nolib.cpp 这条命令会将cpp编译为obj文件,若不使用/c参数则cl还会试图继续将obj链接为exe,但是这里是一个
dll
,没有
main
函数
,因此会报错。不要紧,继续使用链接命令。 Link /
dll
dll
_nolib.obj 这条命令会生成
dll
_nolib.
dll
。 注意,因为编译命令比较简单,所以本文不讨论nmake,有兴趣的可以使用nmake,或者写个bat批处理来编译链接
dll
。 加载
DLL
(显式调用)
黄强的课程社区_NO_2
20
社区成员
369
社区内容
发帖
与我相关
我的任务
黄强的课程社区_NO_2
黄强老师,资深程序员、软件设计师,软件架构师、金牌讲师、 互联网创业者,C、C++、C#、JAVA全栈开发,尤擅长互联网、游戏、教育等领域开发!
复制链接
扫一扫
分享
社区描述
黄强老师,资深程序员、软件设计师,软件架构师、金牌讲师、 互联网创业者,C、C++、C#、JAVA全栈开发,尤擅长互联网、游戏、教育等领域开发!
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章