user.dll与user32.dll的区别?还有kernel.dll与kernel32.dll的区别?
为何调用user32.dll中的函数还要LoadLibrary("user32.dll")?

解决方案 »

  1.   

    调用kernel32.dll中的函数要不要LoadLibrary("kernel32.dll")?
      

  2.   

    user32.dll、kernel32.dll是操作系统函数。
      

  3.   

    user.dll是16位的,在NT架构一统天下的时候几乎就没有用了。如果不想用LIB文件进行隐式调用DLL中的函数,所有的DLL函数都要先用LoadLibrary选加载DLL,然后才能用GetProcAddress取回DLL中的函数地址,并不是只对User32.dll才这样用的,同样的,你也可以不用LoadLibrary来调用User32中的函数,其实很多API都是User32中的,我们并没有用LoadLibrary来调用,而是用LIB库的方式来调用的。
      

  4.   

    楼上的正解。封装在dll中的函数可以有两种方式调用:显示调用: 使用LoadLibrary来加载dll到你的进程空间,然后GetProcAddress
    隐式调用:  在编译时,指定link相应的lib文件。user32.dll之类的系统核心dll就不用指定了。
      

  5.   


    直接 GetMoudleHandle 就行了,因为这些是系统核心 API 函数库,
    从系统启动到关闭,是一直在内存中的,
    千万别乱 free 了