用C语言编写DLL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言编写DLL相关的知识,希望对你有一定的参考价值。
一.动态链接库(dll)结构——dll中定义有两种函数:导出函数(export
function)和内部函数
(internal
function),导出函数可以被其他模块调用,内部函数只能在dll内部使用。我们在用c++定制dll文件时,需要编写的就是包含导出函数表的模块定义文件(.def)和实现导出函数功能的c++文件。下面以sample.dll为例介绍def文件和实现文件的结构:
——1.模块定义文件(.def)是由一个或者多个用于描述dll属性的模块语
句组成的文本文件,每个.def文件至少必须包含以下模块定义语句:
第一个语句必须是library语句,指出dll的名字。
exports语句列出被导出函数的名字。
可以使用description语句描述dll的用途(此句可选)。
";"对一行进行注释(可选)
——2.实现文件(.cpp文件为例)
——实现入口表函数的.cpp文件中,包含dll入口点处理的api函数和导出
函数的代码。 参考技术A 下面就是一个dll的主函数。加上一个空的导出函数.链接的时候目标是dll或者建立dll工程。连接器里面有设置
#include
__declspec(dllexport)
void
FuncInDll
(void)
BOOL
APIENTRY
DllMain(HANDLE
hModule,
DWORD
dwReason,
void*
lpReserved)
HANDLE
g_hModule;
switch(dwReason)
case
DLL_PROCESS_ATTACH:
g_hModule
=
(HINSTANCE)hModule;
break;
case
DLL_PROCESS_DETACH:
g_hModule=NULL;
break;
return
TRUE;
注册表操作有一系列API函数可以调用。你可以在MSDN搜索以Reg开头的API如RegOpenKey,然后旁边一堆相关的注册表API。
注册表键值HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run下添加项可以实现开机启动。
当然还有其它方法。
以上是关于用C语言编写DLL的主要内容,如果未能解决你的问题,请参考以下文章