首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于vc2008生成的几种DLL文件。憋了很久。解决方案

2012-05-28 
关于vc2008生成的几种DLL文件。憋了很久。一种是标准:C/C++ codeBOOL APIENTRY DllMain( HMODULE hModule,DW

关于vc2008生成的几种DLL文件。憋了很久。
一种是标准:

C/C++ code
BOOL APIENTRY DllMain( HMODULE 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:        break;    }    return TRUE;


另一种是:
C/C++ code
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){    int nRetCode = 0;    // 初始化 MFC 并在失败时显示错误    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))    {        // TODO: 更改错误代码以符合您的需要        _tprintf(_T("错误: MFC 初始化失败\n"));        nRetCode = 1;    }    else    {        // TODO: 在此处为应用程序的行为编写代码。    }    return nRetCode;}


第三种是MFC:
C/C++ code
// 唯一的一个 CMy333App 对象CMy333App theApp;// CMy333App 初始化BOOL CMy333App::InitInstance(){    CWinApp::InitInstance();    return TRUE;}


这几种DLL有什么本质区别?

后两种怎样实现第一种那些DLL_PROCESS_ATTACH ,DLL_PROCESS_DETACH 功能?

谢谢。

[解决办法]
DllMain是dll模块的入口函数,_tmain是控制台程序的入口函数,
BOOL CMy333App::InitInstance()
是mfc程序的初始化函数,包括dll模块和exe!mfc的实际实现也是tmain调进来的,只是做了一层封装!
InitInstance在程序初始化或者dll加载时候调!
入口函数可以在ide里自己设置,没设置就默认的tmain,或者DllMain了!
在项目->属性->连接器->高级->入口点可以设置

热点排行