本人初次接触dll程序,发现有的dll程序有“DllMain()"函数,有的又没有,有的有".def"文件,有的没有--晕了。有那位大侠解释解释,最好给个可用VC环境编译的(sdk)源代码,感谢!!!

解决方案 »

  1.   


    偶有篇文章~是我在学dll时写的笔记~
    http://expert.csdn.net/Expert/topic/1034/1034807.xml?temp=.2713434
    希望能对你有帮助~
      

  2.   

    晕啦~dllmain在vc的lib里面有default的,如果你没有特别的需要,是可以不写的。现在大多都不使用def文件了,如果你喜欢也可以用的。源码嘛可以用vc向导生成
      

  3.   

    vc生成的代码不是纯sdk(C)形式,有“类”的成分,不太“干净”。
      

  4.   

    看书啊,有Jeffry Richter的《Windows 核心编程》
      

  5.   

    如果是用C写SDK,关于DLL的情况如下:1. DllMain()是一个要有的,这是DLL的入口;在某些特殊环境下,没有DllMain(),那么就一定会有DllMainCRTStartup(),这是C的运行库中提供的入口,如果使用C的运行库中的DllMainCRTStartup(),那么它是一定会调DllMain()的.2. DEF文件是用以输出用的,如果使用了DEF文件,则不必再为DLL的输出函数上加修饰符:  __declspec( dllexport ).如果两者并存,以输出修饰符为准.//以下是MYDLL.CPP//~ DLL entry point
    BOOL WINAPI DllMain(HINSTANCE hModule,DWORD dwReason,LPVOID lpReserved)
    {
        switch(dwReason)
        {
        case DLL_PROCESS_ATTACH:
        case DLL_PROCESS_DETACH:
    break;
        case DLL_THREAD_DETACH:
        case DLL_THREAD_ATTACH:
            break;
        }
        return TRUE;
    }extern "C" BOOL WINAPI MyFunction()
    {
         return TRUE;
    }//以下是DEF文件
    LIBRARY MYDLL.DLLEXPORTSMyFunction  @1