打开电脑后,无论运行那个软件都出现“引擎动态连接库初始化失败”

来源:百度知道 编辑:UC知道 时间:2024/06/17 13:51:20
怎么办???

1、Non-MFC DLL的建立

每一个DLL必须有一个入口点,就象用C编写的应用程序时,必须有一个WINMAIN函数一样。在Non-MFC DLL中DllMain是一个缺省的入口函数,你不需要编写自己的DLL入口函数,用这个缺省的入口函数就能使动态链接库被调用时得到正确的初始化。如果应用程序的DLL需要分配额外的内存或资源,或者说需要对每个进程或线程初始化和清除操作时,需要在相应的DLL工程的.CPP文件中对DllMain()函数按照下面的格式书写。

BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH:
.......
case DLL_THREAD_ATTACH:
.......
case DLL_THREAD_DETACH:
.......
case DLL_PROCESS_DETACH:
.......
}
return TRUE;
}

参数中,hMoudle是动态库被调用时所传递来的一个指向自己的句柄(实际上,它是指向_DGROUP段的一个选择符);
ul_reason_for_call是一个说明动态库被调原因的标志,当进程或线程装入或卸载动态链接库的时候,操作系统调用入口函数,并说明动态链接库被调用的原因,它所有的可能值为:

(1)DLL_PROCESS_ATTACH: 进程被调用或调用Load Library,DLL被链接到当前进程的地址空间并被初始化;

(2)DLL_THREAD_ATTACH: 当前进程创建一个新线程,DLL在新线程正文内被调用;

(3)DLL_PROCESS_DETACH: 调用DLL的进程被终止,DLL被卸载;

(4)DLL_THREAD_DET