我知道有dll,obj ,*.h的时候怎么用,
显式:在工程中加入obj,加入头文件,就可以用了
隐式:就是LoadLibrary,GetProcAddress,FreeLibrary这种是动态链接?那怎么样才是静态链接呢?我用的是vc谢谢

解决方案 »

  1.   

    静态连接用的是*.lib文件函数实现代码全在其中,加入工程包含.h即可,最终exe文件将包含.lib的代码
    动态连接用的是.dll文件生成的exe文件没有包含其调用dll函数的代码其中只有调用函数的入口地址,所以最终要将.dll一起发布
    动态连接分显示调用 就是LoadLibrary,GetProcAddress,FreeLibrary(你搞反了)来调用相应的函数,此时不需要*.lib 文件
    在vc生成dll同时会有个lib文件,它与静态连接的lib有些不同,此时的lib文件只是包含了在对应dll文件函数的入口地址而没有函数的实现代码,所以你将lib加入工程,只要相应dll存在,就可以直接调用,其实这时的lib文件就相当于LoadLibrary,GetProcAddress,函数,这就叫隐式连接
    因为它没有明确使用LoadLibrary,GetProcAddress函数来调用动态连接库,当然你要有.h文件,也就是函数原形
    应该非常清楚了吧?
      

  2.   

    如果要生成静态连接库,在vc new project 最后一项Win32 Static Library
    这样生成的文件就只有.lib文件,用他连接生成的可执行文件在windows下都可用