如题vc2005静态链接openssl的libeay32.lib和ssleay32.lib两个库 ,为什么还要依赖两个.dll文件???

解决方案 »

  1.   

    你那两个文件libeay32.lib ssleay32.lib
    是动态库的lib文件吧,生成DLL的时候也会生成的。
    确认你把openssl工程的生成文件设置成 静态库了?
      

  2.   

    那两个lib文件是动态库的符号文件,没有实际代码,所以用的是隐式动态链接,而不是静态链接,必须使用静态链接lib版本才行。
    动态链接的lib文件通常都很小。
      

  3.   

    lib有两种类型,一种只是一种代理,lib实际会去载入dll并执行相应代码,这种情况虽然是静态链接,也必须拷贝dll到当前目录或者搜索目录
    另一种包含实际代码,此时才不需要dll
      

  4.   

    调用DLL有两种方式:一种是自己LoadLibrary加载DLL,然后GetProcAddress获取要调用的导出函数的地址,再来调这个地址;另一种方式是link的时候导入DLL对应的LIB,LIB在程序初始化的时候自动执行LoadLibrary和GetProcAddress并把函数地址保存起来,当你调用LIB中的函数时,这些函数再去调DLL的导出函数。你用的就是这种调用方式。
      

  5.   

    libeay32.lib ssleay32.lib 是包含实际代码,所以问题让人奇怪,可执行文件还是依赖那些.dll库?
      

  6.   

    对,这些lib包含的代码只是调用对应的dll导出函数而已。