DLL中的main函数

用VS2010生成的dll函数中,有默认主函数,如果我们想在进入dll之间进行一些程序的初始化操作或者

在程序结束后,进行资源回收等操作,在cpp文件中可进行如下DllMain函数的定义:


BOOL CALLBACK DllMain(HINSTANCE hDll,DWORD fdwReason,LPVOID Reserve)
{
	printf(" dll \n");
   switch(fdwReason)
   {
   case DLL_PROCESS_ATTACH:
	   //初始化
	   printf("Loading.....\n");
	   break;
   case DLL_PROCESS_DETACH:
	   //善后处理
	   printf("UnLoading......\n");
	   break;
   }
   return TRUE;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!感谢您使用ChitGPT进行对话!针对您的问题,在C语言,我们可以通过静态初始化或动态初始化来实现让DLLmain函数之前运行。具体方法如下: 1. 静态初始化 在C语言,我们可以通过在代码声明变量或者调用函数的方式,使得链接器在链接时将DLL文件加载进来。这种方式的原理是在程序启动时,链接器会将所有需要的DLL文件加载进来,并在执行main函数之前进行初始化。这种方式比较简单,只需要将DLL文件放在可执行文件同一路径下即可,不需要其他额外的操作。 2. 动态加载 除了静态初始化,我们也可以通过动态加载的方式实现让DLLmain函数之前被运行。具体步骤如下: (1)使用dlopen函数打开DLL文件: ```C void* handle = dlopen("dll_name.dll", RTLD_NOW); ``` 注意:dlopen函数返回的是一个句柄(void*),我们需要保存这个句柄,以便后续使用。 (2)使用dlsym函数获取DLL需要调用的函数指针: ```C typedef void (*func_ptr)(); func_ptr func = dlsym(handle, "func_name"); ``` 注意:dlsym函数需要指定需要加载的函数名称,返回的是函数指针,我们需要将函数指针转换成对应的函数类型。 (3)使用函数指针调用DLL函数: ```C func(); ``` 需要注意的是,动态加载DLL文件需要使用相关的系统库(dlfcn.h),需要在程序显式地指定(例如,在gcc需要添加-l dl选项)。 以上是两种实现方式,您可以根据实际情况选择相应的方法。希望能够帮到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值