什么是obj文件

article/2025/10/25 3:56:40

此文来源:https://www.cnblogs.com/ShadowHanlder/p/4410213.html

百度百科:

  程序编译时生成的中间代码文件。目标文件,一般是程序编译后的二进制文件,再通过链接器(LINK.EXE)和资源文件链接就成可执行文件了。OBJ只给出了程序的相对地址,而可执行文件是绝对地址。[1] 

     这个问题不是很简单,你只看到了文件从源代码到EXE文件这个流程中的一小部分。要详细的深究这个问题,需要很多时间和精力。

 

 

    

    

     应该是在上图的第四个步骤,会产生obj文件。但它表述的还不够全面,少了一个链接的部分,所以应该在第五步之前再加上一个链接的步骤;

     资源链接很好理解,但链接器(LINK.EXE)?

    ——链接器(LINK.EXE)是链接.lib文件、.obj目标文件、.res;.lib文件又称之为导入库文件,只记录了函数所在DLL的位置。

 

.lib导入库的概念:     

     导入库是一个很棒的做法,如果硬件将平台比作房子,系统比作苦力,API比作积木;然后我们要写的程序比作一张图纸,要苦力按照图纸搭建成我们所需要的积木形状;我们所写的源代码更多,更形象的是完成这个积木的思想,API更像是在这间房子里,所有能让苦力完成这个积木素材。而导入库的概念,就好比将我写的源代码思想通过编译器、资源编译器、链接器翻译成苦力能懂的鸟语。然后链接器再链接.lib文件,告诉苦力需要搭建的积木的素材都在什么地方,让你好去找啊?如果苦力没有,我做好了这个素材直接给你就得了(如DLL、声音、图片、光标)。如果你有我还给苦力另一个同样的积木(Dos下的静态库),那不是脱了裤子放屁么?

.obj目标文件的概念:

  可见,在我们的编程语言和计算机中间多了一个编译器,我更形象的将它理解为我们与计算机之间的翻译。翻译做的事情,我必然看不懂,但它的工作成果就是obj、res、exe这些二进制文件;所有的翻译,在某种程度上都存在欺骗的可能性...这是题外话,所以obj文件是什么?是计算机所能理解的二进制代码,是编译成exe过程中需要的第一步、是ML.exe运行后的结果。

.obj和.exe有什么不同?换句话说编译器和链接器分别做了什么呢:

  从表面上看.obj不能执行,但是.exe可以执行.还有他们的后缀名不同、.exe比.obj多了.lib、.res文件;除此之外,要论述<.obj和.exe有什么不同>这个问题,那么必然要切入<编译器和链接器分别做了什么呢>这个问题,但是这已经超出我问这个问题的初衷了.我会有这个问题只是因为<编译执行和解释执行有什么差别,为什么会产生.obj文件,而obj文件又是什么>这个问题.从此问题引申出来的其他问题,就不在深究,留在以后再说吧...

编译执行和解释执行:

  这个问题是这些问题的原始问题,换句话说其他问题都是这个问题的延伸;如果抽象一下也很有意思的,编译执行就好像是Link.exe直接给了苦力一张它懂的纸条,我全部都苦力你干什么,干完就完事;而解释执行就好像给苦力陪了一台随身携带的翻译器,苦力劳作一下,翻译器再告诉苦力下一个命令,直到苦力将翻译器中的所有命令都完成才罢休。

  这个比喻也完美的解释了“解释执行能跨平台,而编译执行却不行”,因为后者直接给了一张纸,要么苦力看得懂,要么苦力看不懂,看不懂那就干不了,这很正常(因为苦力也分种族)...而前者直接实现了“人工智能”,苦力是哪里的人翻译器就说哪里的话..速度的问题,也完美的解释了,一张纸和翻译器相比,当然前者更快...


http://chatgpt.dhexx.cn/article/19HZ3Pnp.shtml

相关文章

Unity导出模型为Obj文件

Unity导出模型为Obj文件 资源链接下载导入 代码纪要使用方式参考链接 资源链接 原插件代码中只有MeshFilter的Obj导出代码&#xff1b;由于项目需求&#xff0c;需要将SkinnedMeshRenderer导出为Obj文件&#xff0c;故在原代码的基础上&#xff0c;扩展出了SkinnedMeshRendere…

SolidWorks2021导出带材质的OBJ文件

SolidWorks2021导出带材质的OBJ文件 注意SW中所有零件都要使用英文命名&#xff0c;装配体模式下再次新建宏按钮即可 1. 首先下载并安装工具宏 1.1 下载免费工具宏 到Github下载免费的Free-Solidworks-OBJ-Exporter&#xff0c;并解压到自己想要的保存的位置。 1.2 在Soli…

C++/OpenGL 入门(18):读取obj文件并贴图

来源&#xff1a;《Computer Graphics Programming in OpenGL Using C 》by V Scott Gordon John L Clevenger内容&#xff1a;程序6.3 Simple (Limited) OBJ Loader 简单的obj文件读取器&#xff0c;书P152页&#xff0c;PDF171/403 结果 生成&#xff1a; 读取&#xff1a;…

unity动态加载obj文件

unity2018.4.2f1 vs2017 最近项目需求&#xff0c;需要实现动态读物外部obj模型&#xff0c;并加载到场景中&#xff0c;研究了好几天&#xff0c;终于实现了&#xff0c;在此做个记录。 1、首先随便找个.obj模型&#xff0c;带贴图&#xff0c;我的资源截图如下&#xff1a…

obj文件(3): 如何用matlab 打开obj文件

obj文件:如何用 matlab 打开 obj 文件 第一步&#xff1a;检查obj文本格式第二步&#xff1a;用 Blender 软件重新导出obj文件第三步&#xff1a;用excel 打开这个obj 文件第四步&#xff1a;复制excel中的数据&#xff0c;传给matlab第五步&#xff1a; 用matlab 打开3D模型 第…

三维模型obj文件解析

目录 obj文件简介文件结构顶点数据(Vertex data)&#xff1a;自由形态曲线(Free-form curve)/表面属性(surface attributes):元素(Elements):自由形态曲线(Free-form curve)/表面主体陈述(surface body statements):自由形态表面之间的连接(Connectivity between free-form sur…

linux类动态库,Linux动态库(一)

起因 博主在以Linux下做开发。在软件需求中&#xff0c;需要动态库带来的灵活性。 比如说博主主导的智能主机的开发。它需要支持很多种类的设备控制&#xff0c;如普通的开关灯、RGB灯、窗帘、百叶窗等等。我们将这些设备抽象成Device类&#xff0c;具体的设备就从这个类上派生…

OpenFlow Switch

The picture of OpenFlow Switch openflow 架构分为2层&#xff0c;一个是控制器层&#xff0c;一个是switch 层。中间是由openflow protocal进行连接的&#xff0c;负责传输指令与数据。switch分为3大块&#xff0c;第一是openflow channe&#xff0c;他是负责向控制器传输数据…

【博客450】OpenFlow学习

OpenFlow OpenFlow协议规范定义了OpenFlow交换机、流表、OpenFlow通道以及OpenFlow交换协议。 OpenFlow是第一个开放的南向接口协议&#xff0c;也是目前最流行的南向协议。它提出了控制与转发分离的架构&#xff0c;规定了SDN转发设备的基本组件和功能要求&#xff0c;以及与控…

OpenFlow交换机【ACM SIGCOMM顶会论文笔记】

目录 写在前面的话OpenFlow交换机基本思想与工作原理专用OpenFlow交换机&#xff08;Dedicated OpenFlow switches&#xff09; 启用OpenFlow的交换机&#xff08;OpenFlow-enabled switches&#xff09;其他功能&#xff08;Additional features&#xff09;控制器&#xff08…

关于ns-3中安装openflow的问题,解决openflow not found

官网 官网里面并没有明确的描述&#xff0c;这里结合自己的安装过程讲解一下 首先下载源码&#xff0c;记住这一步最好在ns-3目录下&#xff0c;就是运行waf命名的目录 $ hg clone http://code.nsnam.org/jpelkey3/openflow $ cd openflow进行编译&#xff0c;会提示缺少文件…

OpenFlow基础入门知识

本文进行讨论的是OpenFlow 1.0和OpenFlow 1.3的基本知识 Overview&#xff1a; Openflow 1.0&#xff1a; 安全通道单张流表ipv4 Openflow 1.3&#xff1a; 安全通道多级流表&#xff08;流水线pipeline&#xff09;组表测量表ipv6..... 流&#xff08;flow&#xff09; …

Openflow流表学习

Openflow流表学习 OpenFlow是一种新型的网络协议&#xff0c;它是控制器和交换机之间的标准协议。自2009年底发布1.0版本后&#xff0c;OpenFlow协议又经历了1.1、1.2、1.3及1.4版本的演进过程&#xff0c;目前使用和支持最多的是1.0和1.3版本。 OpenFlow1.3在1.0版的基础上进…

SDN与OPENFLOW 简介

本文对Openflow的发展、规范、应用和SDN的提出及相关应用做出较为客观全面的介绍。笔者希望通过本文对OpenFlow/SDN做一个初步介绍&#xff0c;以期帮助大家能够进一步深入了解和学习OpenFlow/SDN。 序言&#xff1a;从网络虚拟化说起 云计算的发展&#xff0c;是以虚拟化技术…

OpenFlow协议分析

实验环境&#xff1a;CentOS OpenDayLight-Carbon mininet WireShark 本实验通过wireshark抓包分析openflow1.3协议的各种报文与字段。 抓包 首先安装好实验所需的软件&#xff0c;这里不多赘述&#xff0c;需要的可以点击查看&#xff1a;mininet多方法安装&#xff0c;控制…

openflow简介

openflow交换机包含一些流表&#xff0c;流表负责具体包查找和转发 控制器通过of协议对流表查询和管理 一、流表 流表组成&#xff1a; 包头域、活动计数器、0个或多个执行行动 包头域&#xff1a; 计数器&#xff1a; 可以针对每张表、每个流、每个端口、每个队列来维护。…

SDN-OpenFlow1.0协议分析

目录 OpenFlow1.0代码 OpenFlow交换机流表 包头域 计数器 行动 流表匹配 OpenFlow消息 OpenFlow消息格式 对称消息 建立OpenFlow连接&#xff08;OFPT_HELLO消息&#xff09; 报告错误&#xff08;OFPT_ERROR消息&#xff09; 获取交换机特性信息&#xff08;Featu…

OpenFlow概述

OpenFlow简介 通俗的讲&#xff0c;OpenFlow是使用类似于API进程配置网络交换机的协议。OpenFlow的思路很简单&#xff0c;网络设备维护一个FlowTable并且只按照FlowTable进行转发&#xff0c;FlowTable本身的生成、维护、下发完全由外置的Controller来实现&#xff0c;注意这里…

OpenFlow了解

openflow的核心思想是将所有的协议都抽象出来&#xff0c;抽象成公共的flow概念。协议抽象&#xff1a;数据&#xff0c;函数&#xff08;对数据的处理方式&#xff09;&#xff0c;逻辑&#xff08;数据与处理的对应关系&#xff0c;函数之间的交互行为与时序&#xff09; pu…

OpenFlow交换机概述

1 交换机组成 OpenFlow交换机包括一个或多个流表和一个组表&#xff0c;执行分组查找和转发&#xff0c;和到一个外部控制器OpenFlow的信道。 控制器使用OpenFlow的协议&#xff0c;可添加、更新和删除流表中表项&#xff0c;既主动或被动响应数据包。 每个流表项包含匹配字段&…