當前位置:首頁 » 編程軟體 » 不同編譯器dll

不同編譯器dll

發布時間: 2022-09-04 14:14:39

❶ 每個編譯器都不一樣么 c語言一般用什麼編譯器 每次一種編譯器不能編譯 另一種卻能編譯出

編譯器就是c語言編譯成二進制的東西,
不同的編譯器是不同的, 比如16位系統和32位系統的編譯器就不同,因為16位的認為int是2位元組,32位的則認為是4個位元組。 另外 linux上的編譯器跟windows下的編譯器也不同,linux上的認為內核空間佔1G,而windows下則認為佔2G, 此外兩個系統對環境變數以及其他的設置也不同所以編譯器更不能用。
而且不同的CPU的指令集時不同的,所以同樣int a =1 最後被編譯成的二進制代碼也是不同的。

C語言的編譯器有很多,windows下的編譯器也有很多,不同的編譯器可能會做一些不同的優化,linux下的gcc也可以添加選項讓他編譯windows下運行的程序。
main(int argc,char*argv[ 】 ) argc 是你的參數個數 argv是你的參數。
比如你最終程序叫 add 那麼 你在命令行執行add 1 2 那麼argc =3 第一個參數使你的add, 第二個第三個就是 1 2, 在函數內部你就可以獲取這倆參數進行相加然後列印

visual 是個IDE,集成開發環境,已經集成好了windows下使用的編譯器連接器 等, 編寫代碼完成後直接點擊編譯就行了。 IDE的默認編譯器是可以更改的,不同的IDE設置不同。

❷ c#不同版本編譯器生成的dll類庫引用的時候一樣嗎

親,高版本使用低版本的是一樣的,但是低版本使用高版本就有問題了,因為有些東西低版本里沒有。你的在vs2008下的dll,在vs2008和2010引用是一樣的,但是在vs2010下的dll在vs2008下引用就可能有問題了

❸ 如果用c語言編寫dll文件,一般用哪些編譯器,或者說工具軟體來實現

dll是windows獨有的,所以非vc++6.0莫屬。
新建一個project:win32 dynamic link library

❹ 如何在編譯器里設置調用別人寫好的lib和dll步驟

如何在編譯器(vs2008)里設置調用別人寫好的lib和dll如何在編譯器(vs2008)里設置調用別人寫好的lib和dll步驟:1.Tools->options->projectsandsolutions->VC++directories分別在包含文件,庫文件填加了路徑(這些路徑只告訴編譯器怎麼找文件,沒有說把那裡面的文件加入工程.)(若不設置,編譯報錯:無法打開***文件)2.Project->properties->c/c++->general->additionalincludedirectories添加包含文件Project->properties->linker->general->additionallibrarydirectories添加庫文件Project->properties->linker->input->添加用到的lib(這一步也可以在代碼中顯示調用#pragmacomment(lib,"***.lib"))(若不添加,連接報錯:無法解析的外部符號)3.將dll文件拷貝到工程debug文件下(如果不拷貝,編譯鏈接不報錯,運行報錯:無法找到***.dll)切記第三條,讓老子排查了一上午,當然最好把所有輸出目錄定位到一個文件下面。附:DLL與LIB文件的區別共有兩種庫:一種是LIB包含了函數所在的DLL文件和文件中函數位置的信息(入口),代碼由運行時載入在進程空間中的DLL提供,稱為動態鏈接庫dynamiclinklibrary。一種是LIB包含函數代碼本身,在編譯時直接將代碼加入程序當中,稱為靜態鏈接庫staticlinklibrary。共有兩種鏈接方式:動態鏈接使用動態鏈接庫,允許可執行模塊(.dll文件或.exe文件)僅包含在運行時定位DLL函數的可執行代碼所需的信息。靜態鏈接使用靜態鏈接庫,鏈接器從靜態鏈接庫LIB獲取所有被引用函數,並將庫同代碼一起放到可執行文件中。關於lib和dll的區別如下:(1)lib是編譯時用到的,dll是運行時用到的。如果要完成源代碼的編譯,只需要lib;如果要使動態鏈接的程序運行起來,只需要dll。(2)如果有dll文件,那麼lib一般是一些索引信息,記錄了dll中函數的入口和位置,dll中是函數的具體內容;如果只有lib文件,那麼這個lib文件是靜態編譯出來的,索引和實現都在其中。使用靜態編譯的lib文件,在運行程序時不需要再掛動態庫,缺點是導致應用程序比較大,而且失去了動態庫的靈活性,發布新版本時要發布新的應用程序才行。(3)動態鏈接的情況下,有兩個文件:一個是LIB文件,一個是DLL文件。LIB包含被DLL導出的函數名稱和位置,DLL包含實際的函數和數據,應用程序使用LIB文件鏈接到DLL文件。在應用程序的可執行文件中,存放的不是被調用的函數代碼,而是DLL中相應函數代碼的地址,從而節省了內存資源。DLL和LIB文件必須隨應用程序一起發行,否則應用程序會產生錯誤。如果不想用lib文件或者沒有lib文件,可以用WIN32API函數LoadLibrary、GetProcAddress裝載。使用lib需注意兩個文件:(1).h頭文件,包含lib中說明輸出的類或符號原型或數據結構。應用程序調用lib時,需要將該文件包含入應用程序的源文件中。(2).LIB文件,略。使用dll需注意三個文件:(1).h頭文件,包含dll中說明輸出的類或符號原型或數據結構的.h文件。應用程序調用dll時,需要將該文件包含入應用程序的源文件中。(2).LIB文件,是dll在編譯、鏈接成功之後生成的文件,作用是當其他應用程序調用dll時,需要將該文件引入應用程序,否則產生錯誤。如果不想用lib文件或者沒有lib文件,可以用WIN32API函數LoadLibrary、GetProcAddress裝載。(3).dll文件,真正的可執行文件,開發成功後的應用程序在發布時,只需要有.exe文件和.dll文件,並不需要.lib文件和.h頭文件

❺ 如何查看一個dll是用什麼編譯器編譯的

dll文件是系統的動態鏈接庫文件,可以用一些十六位春文本編輯器打開,如UltraEdit
修改DLL文件的方法
1、下載DLL文件修改工具EXESCOPE6.0-6.3或6.4工具
2、獲取Browselc.dll、Shdoclc.dll、Shell32.dll和Cryptui.dll這幾個鏈接文件。在找這幾個文件時,最好將其他機器的硬碟,掛接在本機中,然後用本機的操作系統啟動並復制這幾個文件。
3、在修改DLL文件的時候,打開該鍵值,在右面的對話框中將所要修改的鍵值禁用即可,不要刪除,以備日後恢復

❻ dll文件大都使用C語言或者C++編寫的嗎 我從網上搜相關的例子都是這兩種語言編寫的

dll 是動態連接庫,裡麵包含的的是庫函數的實現,有動態就有靜態,靜態鏈接庫是程序用到這段代碼,就會把庫的這段代碼復制到程序里,而動態鏈接庫就是說當我調用這函數時,這函數的實現不在程序里,而在庫里頭,系統從c:\widnows\system32里找到對應庫調用對應的函數。不管什麼語言都,他們都可以寫dll,因為在編寫動態鏈接庫時,你要聲明裡有什麼函數還要實現它,不管什麼語言,本質就是調用相同的系統API函數創建出來的dll文件。因此只要windows支持的語言都能用於創建dll,VB,delphi,C++,C#等都是可以的,鑒於為什麼多數是C++,是因為做庫和底層的東西多數用C/C++來做,比較高效,其實用delphi也可以的,只是delphi過時了,現在人不怎麼用,所以代碼不好找,本質:基本所有語言都能調用系統API函數創建動態鏈接庫(dll).有不懂的請提問。

❼ VC定義的三種類型DLL有什麼區別

.lib是在你的程序編譯連接的時候就連接的文件,因此你必須告知編譯器連接的lib文件在那裡。一般來說,與動態連接文件相對比,lib文件也被稱為是靜態連接庫。當你把代碼編譯成這幾種格式的文件時,在以後他們就不可能再被更改。如果你想使用lib文件,就必須:1包含一個對應的頭文件告知編譯器lib文件裡面的具體內容2設置lib文件允許編譯器去查找已經編譯好的二進制代碼如果你想從你的代碼分離一個dll文件出來代替靜態連接庫,仍然需要一個lib文件。這個lib文件將被連接到程序告訴操作系統在運行的時候你想用到什麼dll文件,一般情況下,lib文件里有相應的dll文件的名字和一個指明dll輸出函數入口的順序表。如果不想用lib文件或者是沒有lib文件,可以用WIN32API函數LoadLibrary、GetProcAddress。事實上,我們可以在VisualC++IDE中以二進制形式打開lib文件,大多情況下會看到ASCII碼格式的C++函數或一些重載操作的函數名字。

❽ c++ 什麼方法可以不通過編譯器編譯,生成DLL文件,或則是自動編譯生成!

重新建一個項目,把對應的文件放進去,該引用的類引用,保證沒錯,就可以編譯了。。。

❾ fortran如何生成dll文件

建工程(Project)的時候,選擇動態鏈接庫(Win32 Dynamic-Link Library)即可。

如果你用的是Compaq Fortran,新建的方法是
File-》New-》Projects-》Win32 Dynamic-Link Library,建完之後你再通過Source Files-》Add Files to Folder添加你現有的filename.f ,編譯,在Debug或Release文件夾下就可以找到你編譯的DLL文件了

❿ vs2005,vs2008,vs2010編譯同一個c語言項目生成的dll文件為什麼不一樣大分別是252,380,246KB

優化方式和程度不有
不同的編譯器用的是可能是不同的優化方案(同一個編譯器不同的設置也會產生不同的結果,比如DeBug和Release)
優化方案取決於編譯器開發者的水平.發行編譯器時的主流CPU和編譯器將要運行的系統平台等因素,
比如DOS時代int_max=0xffff,win32時代int_max=0xffffffff,同樣是int變數,所佔用的內存空間就不同
再如同樣一條C語句:x=x+1;
早期的編譯器可能編譯成類似這樣的結果(這里用結果一詞而不用匯編語言,匯編指令,匯編代碼之類的詞是因為匯編=!機器指令)
mov eax,x
add eax,0x00000001
mov x,eax
而優化的編譯器可能會把這條語句編譯成和
x+=1;
同樣的編譯結果:
mov eax,x
inc eax //這條指令的執行速度和佔用內存的空間都要小
mov x,eax
///////////////////////////////////////////////////////////////
類似的情況還有很多,因為這個回答是我一個字一個字打出來的,不是在哪個地方Copy的,指所以就不一一列舉了,總之:
這些小的差別積少成多,就影響了文件的大小!

熱點內容
androidaes加密 發布:2025-02-13 05:08:36 瀏覽:492
李宗瑞文件夾 發布:2025-02-13 04:27:59 瀏覽:611
phpparent的parent 發布:2025-02-13 04:18:08 瀏覽:457
小容量存儲器市場 發布:2025-02-13 04:01:11 瀏覽:373
ickeck文件夾 發布:2025-02-13 04:00:21 瀏覽:644
上傳照片文案 發布:2025-02-13 03:53:13 瀏覽:426
電腦版花雨庭怎麼調中文伺服器 發布:2025-02-13 03:32:35 瀏覽:39
linux開發android 發布:2025-02-13 03:32:34 瀏覽:490
查詢重復欄位的sql語句 發布:2025-02-13 03:12:42 瀏覽:327
8uftp上傳網站 發布:2025-02-13 03:01:57 瀏覽:245