现在要使用动态链接库中的函数,有dll文件,lib文件,还有.h头文件。
    在程序中使用时,我#include了头文件,然后在link属性input里加入了lib文件,在程序中动态调用dll,使用LoadLibrary和GetProcAddress来调用dll里的函数。  请问这样使用对吗?
   我总感觉有些不对劲,因为我编译完成后,把生成的exe文件拿出来用,没跟dll,lib等文件放在一起,就只是单独使用,也没有提示什么错误。这是怎么回事呢?
     还有想问,有了dll动态链接库,为什么还要有lib静态链接库?这两个文件具体的用途是什么呢?
  先谢谢大家指点了...

解决方案 »

  1.   

    你加入了lib,就可以包含h文件,把dll放到你的exe 目录等,就可以直接使用h中的函数了使用LoadLibrary和GetProcAddress来调用dll里的函数,这种方式,只要有h文件和dll就可以了
      

  2.   

    有了lib,就会导入dll的函数表信息等,就可以不使用GetProcAddress来获得函数地址的方式,可以直接使用函数,来通过lib找到dll中的函数
      

  3.   

    两位楼上的意思是,只要加了Lib和包含头文件就可以了,是吧?
       那lib中又是什么内容呢?
         没有Lib的话,通过GetProcAddress函数不也可以调用dll里的函数吗?
      

  4.   

    加了lib,头文件还要加dll,只不过你exe运行的时候,会通过lib动态查找dll获得函数
      

  5.   

    简单的情况下只要一个dll文件就够了,程序中自己定义函数类型,用LoadLibrary、GetProcAddress然后调用,最后FreeLibrary。这种方式称为显示调用,用这种方式不能使用DLL导出的类。
    如果有h文件和lib文件,可以用隐式调用,直接使用DLL中函数名和类名,不需要LoadLibrary、GetProcAddress、FreeLibrary,当然用这些函数也不会有错。
      

  6.   

    那是不是把lib和dll放在当前目录下,程序中加入lib文件和头文件,在需要使用dll中的函数的时候,就可以通过Lib找到dll中的函数呢?
       还有就是,这样产生的exe文件,是否一定需要和lib,dll放在一起呢?
      

  7.   

    程序加入lib,在link的时候会把lib 链接进你的exe,运行的时候,只要你的exe 和dll在当前目录就可以了
      

  8.   

    哦,原来link的时候会把lib链接进exe呀,知道了...呵呵,谢谢oyljerry
      

  9.   

    首先 lz 明白什么是动态链接库,可以读一读 MSDN 的 Dynamic-Link Libraries 部分简单点说,DLL 中存放了一些需要调用的代码,其他的程序将 DLL 载入到内存后,可以对其中的代码进行调用执行DLL 的载入主要有两种方式,程序载入时加载,程序运行时加载采用程序载入时加载,程序编译时需要知道 DLL 中代码的信息,这就需要 .h 文件和 .lib 文件.h 文件提供一些函数和类的原型声明.lib 文件提供代码的偏移地址等信息这些文件只是用于编译和链接,运行时只需要 DLL 文件各种开发包,如 Windows Platform SDK,提供的主要就是 .h 和 .lib 文件