我已经把LIB文件添加进项目中,但编译后的文件很小,依旧调用DLL文件,请问我哪里出错了?

解决方案 »

  1.   

    你是如何添加的?在我的印象中,只有用import导入的动态库才可以脱离动态库。比如:
    #import "d:\program files\common files\system\ado\msado15.dll" no_namespace  rename("EOF","adoEOF")。也许你的动态库得编译成静态的才行吧。
      

  2.   

    没有什么错误呀
    编译后是肯定会调用DLL的
    不过可以使用静态连接,但不知道怎样静态连接自己的DLL
      

  3.   

    是不是dll文件路径不对。
    在调试时,将lib文件和dll文件放在项目所在目录中 ,
    在运行时将dll文件放在执行文件的目录中
      

  4.   

    DLL是动态编译库,runtime时调用的,LIB文件是不是又称静态编译库?LIB是不是很多OBJ的一个包?
    我现在想脱离DLL文件运行,也就是把它以静态编译库的形式连接进我的程序中。
    请问该怎么做?
    我用的是MATCOM,MATLAB的一个第三方编译器,它提供了LIB文件和H文件,在SYSTEM32目录下还有一个DLL文件,现在我希望能脱离DLL文件也能运行,有办法吗?我不把LIB文件添加进项目,也可以编译通过,后来发现H文件中有这样一段话:
    #if defined (_MSC_VER) || defined(__MINGW32__)
      #if defined (MLIBDLL)
        #define DLLI __declspec(dllexport)
      #else
        #define DLLI __declspec(dllimport)
      #endif
      #define DLLX __declspec(dllexport)
      #define DLLW
    我想这个就是调用DLL的语句吧,但我不明白它怎么指定DLL文件的?
    还请各位高手指点
      

  5.   

    你的lib文件一定是编译动态链接库时生成的,它只包含一些链接信息,并不包含函数的实体,所以调用函数时还得访问dll文件,如果你要静态链接,你要重新创建一个静态链接库的project,这时生成的lib 就可以静态链接了!
      

  6.   

    那有没有办法把DLL+带有链接信息的LIB合并成带有函数实体的静态连接库?
      

  7.   

    当然要调用DLL了
    LIB只是个导入库 
    DLL中才有你要调用的代码三
      

  8.   

    恩,是这样的,那请问TONY宝宝,在哪里修改可以实现静态连接方式。我用的是VC6。
      

  9.   

    重新新建一个project ,选择win32 static libary,然后将你DLL中的函数复制过去,重新编译就可以了