zoukankan      html  css  js  c++  java
  • .obj,.lib,.dll,.h之间的相互关系

    http://topic.csdn.net/t/20000912/22/29670.html

    .obj,.lib,.dll,.h之间的相互关系。

    楼主Sunlet(大赢家)2000-09-12 22:42:00 在 VC/MFC / 基础类 提问

    1。.obj,.lib,.dll,.h之间的相互关系如何?使用的时候调用方式有什么不同?  
      2。怎么自己做一个.lib的文件,请把过程将一下,最好有示例,谢谢!  
      3。工程文件中怎么使用obj.文件。  
     

    1 楼Holly() 回复于 2000-09-13 02:34:00 得分 80

    1.  
      obj:是CPP对应的二进制代码格式,是未经重定位的!  
      lib:是若干个obj的集合,本质与obj相同!  
      dll:是可实际运行的二进制代码,有定位代码的!  
      h:是头文件,也可算是源代码,因为当CPP中用#include时,会把包含的文件的内容在CPP中扩展开!  
      Top

    2 楼Holly() 回复于 2000-09-13 02:45:00 得分 0

    2.  
      在VC++中利用APPWIZARD可以建立一个LIB的工程,  
      file->new->projects->Win32   static   library;  
      再将你的源文件添加到该工程中即可!  
      project->add   to   projects->files;  
       
      3.将obj文件添加到工程中即可!  
      project->add   to   projects->files;选择你的obj文件;  
      Top

    3 楼Holly() 回复于 2000-09-13 02:55:00 得分 0

    1.  
      使用时,obj和lib是没有本质区别的,lib就是obj,使用lib地方都可以使用obj;  
      dll是动态连接库,是运行时动态加载的,而lib是静态的连接库,相当于程序编译的未经链接定位的二进制代码!(obj的一种表现形式)  
      h文件是用来编写函数(类,变量类型)原型声明的,通常dll、lib和obj的使用需要有h文件的配合,以获得二进制代码的原型声明!  
      当然使用dll时也可用GetProcAddress来配合避免使用h文件!Top

    4 楼Holly() 回复于 2000-09-13 03:25:00 得分 0

    备注:  
      在使用DLL时也会有一个附加的lib是用来表明DLL的引出表而用的,其中的信息相当于一个obj中只有声明引出的部分,没有函数体。Top

    5 楼Sunlet(大赢家) 回复于 2000-09-13 11:24:00 得分 0

    怎么把我的lib   做成象编译器的lib那样,自动添加到我的工程中.而不用每次Add   files   to   projectTop

    6 楼Holly() 回复于 2000-09-13 11:52:00 得分 0

    没有办法!必须每次自己添加!  
      最好的情况是在Tools->options...->Directories中将include、library、source   files的路径设置添加你的代码库的目录,为了调试方便,把Debug版和Release版分别输出不同的名字,如将Debug版的输出文件后添加一个 D.  
      但是这样也必须每次使用时在使用的工程设置的project->settings->link->object/library   modules:栏中将需要的库的名字添加进去(无需路径)!Top

    7 楼Sunlet(大赢家) 回复于 2000-09-13 21:37:00 得分 0

    非常感谢Holly的帮助,我做lib的时候遇到以下问题,请你在解释一下:  
      我编写了一个支持mfc的lib(foxreader.lib),当mfc程序调用它时,就有以下几个warning,  
      单程序仍然能执行,请问一下,怎么去除这些warning.  
      Linking...  
      LINK   :   warning   LNK4098:   defaultlib   "mfc42.lib"   conflicts   with   use   of   other   libs;   use   /NODEFAULTLIB:library  
      LINK   :   warning   LNK4098:   defaultlib   "mfcs42.lib"   conflicts   with   use   of   other   libs;   use   /NODEFAULTLIB:library  
      LINK   :   warning   LNK4098:   defaultlib   "msvcrt.lib"   conflicts   with   use   of   other   libs;   use   /NODEFAULTLIB:library  
      foxclass.exe   -   0   error(s),   3   warning(s)  
      Top

    8 楼Holly() 回复于 2000-09-13 23:36:00 得分 0

    这个Warning没有必要去掉!  
      这是因为你的foxreader.lib中也有用到相同的MFC的lib文件,Linker自动将重复的链接跳过给出的信息!  
      Top

    相关问题



  • 相关阅读:
    View.VISIBLE、INVISIBLE、GONE的区别
    Android中TextView内容过长加省略号
    Android 读取SIM卡参数
    java分布式通信系统(J2EE分布式服务器架构)
    Java分布式处理技术(RMI,JDNI)
    Java分布式缓存框架
    spring
    Apache与Nginx的优缺点比较
    Java如何获取文件编码格式
    java 乱码问题-Dfile.encoding=UTF-8
  • 原文地址:https://www.cnblogs.com/flyingfish/p/659240.html
Copyright © 2011-2022 走看看