有没有方法实现这种功能:
我LoadLibrary我的dll后,dll中的一些代码就执行起来,而不是在LoadLibrary之后导出dll中的函数,再调用函数?

解决方案 »

  1.   

    DllMain里面或者全局变量的类的构造函数.或者在函数外面写int v = 函数();
      

  2.   

    我google了好多次了。你帮我看看我哪写错了。BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    {
        MessageBoxA(0, "haha", "DLL Message", MB_OK | MB_ICONINFORMATION);    switch (fdwReason)
        {
            case DLL_PROCESS_ATTACH:
            OutputDebugString("pa");
            MessageBoxA(0, "haha", "DLL Message", MB_OK | MB_ICONINFORMATION);
                // attach to process
                // return FALSE to fail DLL load
                break;        case DLL_PROCESS_DETACH:
            OutputDebugString("pd");
                // detach from process
                break;        case DLL_THREAD_ATTACH:
            MessageBoxA(0, "haha", "DLL Message", MB_OK | MB_ICONINFORMATION);
            OutputDebugString("ta");
                // attach to thread
                break;        case DLL_THREAD_DETACH:
            OutputDebugString("td");
                // detach from thread
                break;
        }
        return TRUE; // succesful
    }上面是dll的,下面是exe的int main()
    {    HINSTANCE libh;
        libh = LoadLibrary("TestDll.dll");
        if(libh)
        {
            printf("%0x",libh);
        }
        else printf("error code = %0x",GetLastError());    return 0;
    }
      

  3.   

    你的代码是啥情况,加载DLL后,不弹出提示框吗?
      

  4.   

    加载dll后就会弹出对应的对话框等,当然还要看你的exe是否为用户进程,否则你不一定能看到
      

  5.   

    代码倒是没错
    但是你的TestDll.dll能被LoadLibrary找到么?
      

  6.   

    能够成功返回dll句柄啊。这点应该没问题
      

  7.   

    exe代码就是上面那点,是用户进程。就算框看不到,OutputDebugString的内容应该看的到吧?
      

  8.   

    嗯,没有任何反应,LoadLibrary能返回正常句柄
      

  9.   

    你调试一下看,在DLLMAIN里打断点,可以进去吗?