導航:首頁 > 源碼編譯 > obj文件編譯後的結構

obj文件編譯後的結構

發布時間:2022-05-30 08:58:05

『壹』 聊天時後面有個obj什麼意思

這是一種文本文件,程序編譯時生成的中間代碼文件目標文件,一般是程序編譯後的二進制文件,再通過鏈接器和資源文件鏈接就成可執行文件了。

OBJ只給出了程序的相對地址,而可執行文件是絕對地址。

obj文件特點:OBJ文件是一種3D模型文件。不包含動畫、材質特性、貼圖路徑、動力學、粒子等信息。

OBJ文件主要支持多邊形(Polygons)模型。雖然也支持曲線(Curves)、表面(Surfaces)、點組材質(Point Group Materials),但Maya導出的OBJ文件並不包括這些信息

OBJ文件支持三個點以上的面,這一點很有用。

很多其它的模型文件格式只支持三個點的面,所以導入Maya的模型經常被三角化了,這對於我們對模型進行再加工甚為不利。

(1)obj文件編譯後的結構擴展閱讀:

OBJ文件支持法線和貼圖坐標。在其它軟體中調整好貼圖後,貼圖坐標信息可以存入OBJ文件中。

這樣文件導入Maya後只需指定一下貼圖文件路徑就行了,不需要再調整貼圖坐標。

obj文件基本結構:OBJ文件不需要任何種文件頭(File Header),盡管經常使用幾行文件信息的注釋作為文件的開頭。

OBJ文件由一行行文本組成,注釋行以符號「#」為開頭,空格和空行可以隨意加到文件中以增加文件的可讀性。

有字的行都由一兩個標記字母也就是關鍵字(Keyword)開頭,關鍵字可以說明這一行是什麼樣的數據。

多行可以邏輯地連接在一起表示一行,方法是在每一行最後添加一個連接符()。注意連接符()後面不能出現空格或Tab格,否則將導致文件出錯。

『貳』 obj文件的OBJ文件的基本結構

OBJ文件不需要任何種文件頭(File Header),盡管經常使用幾行文件信息的注釋作為文件的開頭。OBJ文件由一行行文本組成,注釋行以符號「#」為開頭,空格和空行可以隨意加到文件中以增加文件的可讀性。有字的行都由一兩個標記字母也就是關鍵字(Keyword)開頭,關鍵字可以說明這一行是什麼樣的數據。多行可以邏輯地連接在一起表示一行,方法是在每一行最後添加一個連接符()。注意連接符()後面不能出現空格或Tab格,否則將導致文件出錯。
下列關鍵字可以在OBJ文件使用。在這個列表中, 關鍵字根據數據類型排列,每個關鍵字有一段簡短描述。
頂點數據(Vertex data):
v 幾何體頂點(Geometric vertices)
vt 貼圖坐標點(Texture vertices)
vn 頂點法線(Vertex normals)
vp 參數空格頂點 (Parameter space vertices)
自由形態曲線(Free-form curve)/表面屬性(surface attributes):
deg 度(Degree)
bmat 基礎矩陣(Basis matrix)
step 步尺寸(Step size)
cstype 曲線或表面類型 (Curve or surface type)
元素(Elements):
p 點(Point)
l 線(Line)
f 面(Face)
curv 曲線(Curve)
curv2 2D曲線(2D curve)
surf 表面(Surface)
自由形態曲線(Free-form curve)/表面主體陳述(surface body statements):
parm 參數值(Parameter values )
trim 外部修剪循環(Outer trimming loop)
hole 內部整修循環(Inner trimming loop)
scrv 特殊曲線(Special curve)
sp 特殊的點(Special point)
end 結束陳述(End statement)
自由形態表面之間的連接(Connectivity between free-form surfaces):
con 連接 (Connect)
成組(Grouping):
g 組名稱(Group name)
s 光滑組(Smoothing group)
mg 合並組(Merging group)
o 對象名稱(Object name)
顯示(Display)/渲染屬性(render attributes):
bevel 導角插值(Bevel interpolation)
c_interp 顏色插值(Color interpolation)
d_interp 溶解插值(Dissolve interpolation)
lod 細節層次(Level of detail)
usemtl 材質名稱(Material name)
mtllib 材質庫(Material library)
shadow_obj 投射陰影(Shadow casting)
trace_obj 光線跟蹤(Ray tracing)
ctech 曲線近似技術(Curve approximation technique)
stech 表面近似技術 (Surface approximation technique)
OBJ文件不包含面的顏色定義信息,不過可以引用材質庫,材質庫信息儲存在一個後綴是.mtl的獨立文件中。關鍵字mtllib即材質庫的意思。
材質庫中包含材質的漫射(diffuse),環境(ambient),光澤(specular)的RGB(紅綠藍)的定義值,以及反射(specularity),折射(refraction),透明度(transparency)等其它特徵。
usemtl指定了材質之後,以後的面都是使用這一材質,直到遇到下一個usemtl來指定新的材質。

『叄』 c++ obj文件與exe文件的區別

編譯:當前源代碼編譯成二進制目標文件(.obj文件)

鏈接(link):將生成的.obj文件與庫文件.lib等文件鏈接,生成可執行文件(.exe文件)。

可以說.obj文件是.exe文件的前身;

1、obj里存的是編譯後的代碼跟數據,並且有名稱,所以在連接時會出現未解決的外部符號一說。當連成exe後便不存在名稱的概念了,只有地址。lib就是一堆obj的組合。

編譯器會默認鏈接一些常用的庫,其它的需要你自己指定。

2、目標文件,一般是程序編譯後的【二進制文件】,再通過鏈接器和資源文件鏈接就成可執行文件了。OBJ只給出了程序的【相對地址】,而可執行文件是【絕對地址】。CPP對應的二進制代碼格式obj,是未經重定位的!

3、編譯C 程序會產生obj 文件和exe 文件,我們都知道exe 文件是可執行文件,但obj 文件是做什麼用的呢?

查了下資料發現obj 文件和exe 文件都是二進制數據文件,其中obj 文件是COFF 格式,exe 文件時PE 格式。

那為什麼不直接讓 obj 文件作為可執行文件呢?

原來obj 文件的格式是跨平台 的,通過link 可以將obj 鏈接為所使用系統能夠識別的格式,比如windows 系統中的exe 文件。

一個現代編譯器的主要工作流程如下:
源程序(source code)→ 預處理器(preprocessor)→ 編譯器(compiler)→ 匯編程序(assembler)→ 目標程序(object code)→ 連接器(鏈接器,Linker)→ 可執行程序(executables)

(3)obj文件編譯後的結構擴展閱讀

C++編譯 (.obj, .lib, .dll, .exe的關系)

一、總體介紹:

c++程序在編譯後,在目標路徑下會生成多個文件:

Debug文件夾(*.exe,*.ilk,*.obj,*.pch,*.pdb,*.idb,*,pdb),*.cpp,*.dsp,*.ncb,*.plg

*.exe:是生成的可執行文件

*.ilk:當選定漸增型編譯連接時,連接器自動生成ILK文件,記錄連接信息

*.obj:是目標文件,源程序編譯後的產物

*.pch:全稱是PreCompiled Header,就是預先編譯好的頭文件

*.idb:文件保存的信息,使編譯器在重新編譯的時候只重編譯最新改動過的函數和只對最新類定義改動過的源文件進行重編譯,以提高編譯速度

*.pdb:全稱是Program DataBase,即程序資料庫文件,用來記錄調試信息

*.dsp:(全稱是Developer Studio Project)也是一個配置文件

*.ncb:(全稱No Compile Browser)的縮寫,其中存放了供ClassView、WizardBar和Component Gallery使用的信息,由VC開發環境自動生成

*.plg:實際上是一個超文本文件,可以用Internet Explorer打開,記錄了Build的過程

*.cpp:就是C++源代碼文件.

二、具體介紹:

lib是和dll對應的。

lib是靜態的庫文件,dll是動態的庫文件。

所謂靜態就是link的時候把裡面需要的東西抽取出來安排到你的exe文件中,以後運行 你的exe的時候不再需要lib。

所謂動態就是exe運行的時候依賴於dll裡面提供的功能,沒有這個dll,你的exe無法運行。

lib, dll, exe都算是最終的目標文件,是最終產物。而c/c++屬於源代碼。源代碼和最終目標文件中過渡的就是中間代碼obj,實際上之所以需要中間代碼,是你不可能一次得到目標文件。

比如說一個exe需要很多的cpp文件生成。而編譯器一次只能編譯一個cpp文件。

這樣編譯器編譯好一個cpp以後會將其編譯成obj,當所有必須要的cpp都編譯成obj以後,再統一link成所需要exe,應該說缺少任意一個obj都會導致exe的鏈接失敗。

  1. obj里存的是編譯後的代碼跟數據,並且有名稱,所以在連接時會出現未解決的外部符號一說。當連成exe後便不存在名稱的概念了,只有地址。lib就是一堆obj的組合。

2.理論上可以,但實際中通常用lib。

3.編譯器會默認鏈接一些常用的庫,其它的需要你自己指定。

附上lib和DLL的區別

(1)lib是編譯時需要的,dll是運行時需要的。

如果要完成源代碼的編譯,有lib就夠了。

如果也使動態連接的程序運行起來,有dll就夠了。

在開發和調試階段,當然最好都有。

(2)一般的動態庫程序有lib文件和dll文件。

lib文件是必須在編譯期就連接到應用程序中的,而dll文件是運行期才會被調用的。如果有dll文件,那麼對應的lib文件一般是一些索引信息,具體的實現在dll文件中。

如果只有lib文件,那麼這個lib文件是靜態編譯出來的,索引和實現都在其中。靜態編譯的lib文件有好處:給用戶安裝時就不需要再掛動態庫了。

但也有缺點,就是導致應用程序比較大,而且失去了動態庫的靈活性,在版本升級時,同時要發布新的應用程序才行。

(3)在動態庫的情況下,有兩個文件,一個是引入庫(.LIB)文件,一個是DLL文件。

引入庫文件包含被DLL導出的函數的名稱和位置,DLL包含實際的函數和數據,應用程序使用LIB文件鏈接到所需要使用的DLL文件,庫中的函數和數據並不復制到可執行文件中,因此在應用程序的可執行文件中,存放的不是被調用的函數代碼,而是DLL中所要調用的函數的內存地址。

這樣當一個或多個應用程序運行是再把程序代碼和被調用的函數代碼鏈接起來,從而節省了內存資源。

從上面的說明可以看出,DLL和.LIB文件必須隨應用程序一起發行,否則應用程序將會產生錯誤。

『肆』 obj 是什麼文件類型啊可能是三維模型方面的,請大俠解答

這是tuboc c++軟體編譯生成的文件
obj文件目標文件,一般是程序編譯後的二進制文件,在通過鏈接器和資源文件鏈接就成exe文件了。
OBJ只給出了程序的相對地址,而EXE是絕對地址。
OBJ文件不支持有孔的多邊形面。
舉個例子說明一下:
選擇Maya的創建多邊形工具(Polygons -> Create Polyon Tool),在視圖中畫一個四邊形,不要按回車,按Ctrl在四邊形中間點一下,可以繼續在四邊形中挖一個洞。把這個有孔的多邊形存成OBJ格式,在導入Maya時,會發現多邊形少了一塊。如果你把這也看成錯誤,現在至少你已經知道錯誤的原因了,就是OBJ文件不支持有孔的多邊形面。
OBJ文件 -- 實際問題:
現在來討論一點比較實際的問題吧,就是一旦你遇到了一個出錯的OBJ文件,倒底該怎麼辦?
當你打開OBJ文件後,往往會看到有幾萬行的代碼,你恐怕還沒本事情一眼看出錯誤所在行,除非程序的錯誤信息中已經告訴你錯誤行。如果你不知道錯誤在哪裡,可以用排除法,弄清楚肯定正確的代碼范圍,通過縮減錯誤代碼范圍定位錯誤。例如,你先新建一個空的OBJ文件,把有錯的OBJ文件代碼粘貼一半過來,然後把這個只有一半代碼的新OBJ文件導入Maya。如果這時沒有錯誤信息,說明錯誤行是在另一半代碼中,可以從另一半代碼中再粘貼一部分代碼試試看;如果這時出現錯誤,說明錯誤行就在粘貼的代碼中,可以把粘貼過來的代碼刪去一部分再試試看。就這樣,逐步縮減范圍直到找到錯誤行為止。
這種方法雖然很麻煩,不過頗為有效。如果你不會編程,又遇到非常緊急的情況,這種方法還是值得一試的。
OBJ文件 -- 細節:
掌握了這么多差不多也夠用了,不過由於網上詳細講解OBJ文件的中文文檔很少,我還是再講一些例子,給大家提供多一點的信息吧。
簡單的OBJ格式寫法。
# Simple Wavefront file
v 0.0 0.0 0.0
v 0.0 1.0 0.0
v 1.0 0.0 0.0
f 1 2 3
面可以使用負值索引,有時用負值索引描述面更為簡便。
"f -4 -3 -2 -1"這句索引值"-3"表示從"f"這行往上數第3個頂點,就是"v -0.500000 0.000000 -0.800000",其它的索引值以此類推。 因此與這一行等效的正值索引寫法為:"f 1 2 3 4"
v -0.500000 0.000000 0.400000
v -0.500000 0.000000 -0.800000
v -0.500000 1.000000 -0.800000
v -0.500000 1.000000 0.400000
f -4 -3 -2 -1
OBJ文件不包含面的顏色定義信息,不過可以引用材質庫,材質庫信息儲存在一個後綴是".mtl"的獨立文件中。關鍵字"mtllib"即材質庫的意思。
材質庫中包含材質的漫射(diffuse),環境(ambient),光澤(specular)的RGB(紅綠藍)的定義值,以及反射(specularity),折射(refraction),透明度(transparency)等其它特徵。
"usemtl"指定了材質之後,以後的面都是使用這一材質,直到遇到下一個"usemtl"來指定新的材質。

『伍』 *.c,*.obj,*.exe,分別是什麼程序

C是程序代碼百(即源文件)是保存你的C代碼的文件,C文件依次編譯,並對應。每個OBJ文件都被生成,即問目標文件的答案,是對應C文件的二進製版本,一旦連接,您就有了您的.exe文件,它是您的可執行文件。

Obj文件結構:Obj文件不需要任何類型的文件頭,盡管用幾行文件信息啟動文件是很常見的。

OBJ文件由幾行文本組成,注釋行以符號「#」開頭,空格和空白行可以隨意添加到文件中,使其更具可讀性。帶有單詞的行以一個或兩個標記的字母(或關鍵字)開頭,這些字母或關鍵字描述行是什麼類型的數據。

(5)obj文件編譯後的結構擴展閱讀:

C編譯的整個過程非常復雜,大致可以分為以下幾個階段:

1.預處理階段

工作在這個階段主要是源代碼的預處理,主要包括宏定義指令,頭文件包含指令,預定義的指令和特殊字元的處理,如更換一個宏定義和文件的文件頭包含預定義的代碼來代替,總之這一步主要做一些更換,輸出相應的文件相同的意義,但不同的內容文件。

2.編譯和優化

編譯是通過詞法分析將第一階段處理的文件轉換成匯編語言。優化包括中間代碼的優化,如公共表達式的刪除、循環優化等。並優化生成目標代碼,如如何充分利用機器的寄存器來存儲相關變數的值,以減少訪問內存的次數。

3.組裝階段

將匯編語言翻譯成機器指令。

『陸』 C語言源程序文件名的後綴是.OBJ,經過編譯後,生成文件的後綴是什麼經過連接後,生成文件的後綴是什麼

C語言源程序文件名的後綴是.c。C源程序經過C編譯程序編譯之後生成一個後綴為.OBJ的二進制文件,

然後由稱為「連接程序」的軟體,把此.OBJ文件與C語言提供的各種庫函數連接起來生成一個後綴為.EXE的可執行文件。

由高級語言編寫的程序稱為「源程序」,把由二進制代碼表示的程序稱為「目標程序」。為了把源程序轉換成機器能接受的目標程序,這時我們需要具有翻譯功能的軟體--「編譯程序」。每種高級語言都有與它對應的編譯程序。

(6)obj文件編譯後的結構擴展閱讀

1、目標文件的擴展名為「.obj」(Windows)或「.o」(Linux)。目標文件已經是機器指令,但還不能運行,因為目標文件還沒有解決函數調用問題。

2、可執行文件的擴展名為「.exe「。

『柒』 「obj」是什麼意思

1、釋義:是一種文本文件,程序編譯時生成的中間代碼文件目標文件,一般是程序編譯後的二進制文件,再通過鏈接器和資源文件鏈接就成可執行文件了。OBJ只給出了程序的相對地址,而可執行文件是絕對地址。

2、obj文件特點:(1) OBJ文件是一種3D模型文件。不包含動畫、材質特性、貼圖路徑、動力學、粒子等信息。(2) OBJ文件主要支持多邊形(Polygons)模型。雖然也支持曲線(Curves)、表面(Surfaces)、點組材質(Point Group Materials),但Maya導出的OBJ文件並不包括這些信息。(3) OBJ文件支持三個點以上的面,這一點很有用。很多其它的模型文件格式只支持三個點的面,所以導入Maya的模型經常被三角化了,這對於我們對模型進行再加工甚為不利。(4) OBJ文件支持法線和貼圖坐標。在其它軟體中調整好貼圖後,貼圖坐標信息可以存入OBJ文件中,這樣文件導入Maya後只需指定一下貼圖文件路徑就行了,不需要再調整貼圖坐標。

3、obj文件基本結構:OBJ文件不需要任何種文件頭(File Header),盡管經常使用幾行文件信息的注釋作為文件的開頭。OBJ文件由一行行文本組成,注釋行以符號「#」為開頭,空格和空行可以隨意加到文件中以增加文件的可讀性。有字的行都由一兩個標記字母也就是關鍵字(Keyword)開頭,關鍵字可以說明這一行是什麼樣的數據。多行可以邏輯地連接在一起表示一行,方法是在每一行最後添加一個連接符()。注意連接符()後面不能出現空格或Tab格,否則將導致文件出錯。

『捌』 c 語言編譯後產生的obj文件是做什麼的

簡單的說就是目標代碼.
obj文件是單獨的目標文件,它還不能單獨運行.需要把相關的obj文件連接到一起,才能產生可執行文件.

『玖』 obj是什麼文件

obj就是目標文件,是你的源程序經過編譯程序編譯後生成的,它不能直接執行,需要連接程序連接後才能生成可執行文件,這樣就能值行了。
這種目標文件一般是由機器代碼組成的,但也有例外,可以是自己定義的一些偽指令代碼,打開obj文件可以使用UltraEdit或者autodesk maya軟體。

『拾』 obj是什麼文件obj文件怎麼打開

obj文件是3D模型文件格式。由Alias|Wavefront公司為3D建模和動畫軟體"Advanced Visualizer"開發的一種標准,適合用於3D軟體模型之間的互導,也可以通過Maya讀寫。比如你在3dsMax或LightWave中建了一個模型,想把它調到Maya裡面渲染或動畫,導出OBJ文件就是一種很好的選擇。目前幾乎所有知名的3D軟體都支持OBJ文件的讀寫,不過其中很多需要通過插件才能實現。

(10)obj文件編譯後的結構擴展閱讀:

obj文件的文件特點

1、OBJ文件是一種3D模型文件。不包含動畫、材質特性、貼圖路徑、動力學、粒子等信息。

2、OBJ文件主要支持多邊形(Polygons)模型。雖然也支持曲線(Curves)、表面(Surfaces)、點組材質(Point Group Materials),但Maya導出的OBJ文件並不包括這些信息。

3、OBJ文件支持三個點以上的面,這一點很有用。很多其它的模型文件格式只支持三個點的面,所以導入Maya的模型經常被三角化了,這對於我們對模型進行再加工甚為不利。

(4)OBJ文件支持法線和貼圖坐標。在其它軟體中調整好貼圖後,貼圖坐標信息可以存入OBJ文件中,這樣文件導入Maya後只需指定一下貼圖文件路徑就行了,不需要再調整貼圖坐標。

閱讀全文

與obj文件編譯後的結構相關的資料

熱點內容
一級抗震樓層框架梁加密區 瀏覽:208
pdf開發庫 瀏覽:281
chunking演算法 瀏覽:622
程序員被逮捕的判決 瀏覽:813
android定位獲取城市 瀏覽:599
做伺服器客戶怎麼去找 瀏覽:997
程序員升職可以干什麼 瀏覽:301
單片機原理課程設計大綱 瀏覽:909
cad命令大全圖表下載 瀏覽:389
程序員去印度工作 瀏覽:422
蘋果app活動怎麼導出 瀏覽:5
pdf轉高清圖片 瀏覽:35
人人玩棋牌源碼 瀏覽:347
如何獲取美團伺服器時間 瀏覽:342
php簡單加密演算法 瀏覽:795
什麼是開伺服器 瀏覽:607
cd4017單片機怎麼用 瀏覽:265
鳥哥pdf 瀏覽:242
忘記加密的密碼了怎麼辦 瀏覽:560
好友信息提示音在哪個文件夾 瀏覽:276