dll文件為什麼不能導出
① RADASM 編譯DLL 為何沒有輸出表,求指點
DLL文件是PE格式的,他有一個導出表,我們用*.def文件為其定義導出哪些函數,*.def文件格式如下:
EXPORTS func1
func2
func3
……
因為我們進行連接文件的時候,是把*.obj文件和*.def文件進行鏈接的,鏈接後生成*.DLL文件和*.lib文件,*.lib文件中就有我們定義的導出的函數的信息。這樣,系統就知道該DLL文件有
哪些函數導出了。沒有經過*.def文件定義的函數標識,就不能直接被應用程序使用,只能被DLL文件里的函數直接使用。
不知道這些對你是否有用
② 「無法找到指定dll庫文件的輸出命令」怎麼解決
系統有問題了。
換個驗證過的系統盤重裝系統就行了。
用u盤或者硬碟這些都是可以的,且安裝速度非常快。
③ 無法找到指定dll庫文件的輸出命令 怎麼解決
以d3_dx56.dll為例,具體辦法如下:
1、首先,以一定的方式獲取d3_dx56.dll文件,如搜索引擎查詢和下載。
④ delphi dll 導出tlb
你說的DLL文件導出TLB的話,普通的DLL文件是無法導出tlb文件的,應該是COM類型的DLL組件,才可以導出tlb文件,用於COM組件的使用。
具體就是在DLEPHI的導入
中導入,你要使用的com組件的DLL文件即可。
在DELPHI中有兩種方法使用這種文件,一種是注冊了dll文件的使用方法,另一種是不需要注冊DLL的方法。
具體使用可以根據你的實際情況選擇
⑤ VS 程序能夠運行但dll文件無法生成
你貼出來的項目配置,把目標文件擴展名改為.dll
你的配置類型是動態庫(.dll)。擴展為exe。相當於生成dll後把後綴改為exe 所以不能跑。
要有exe調用
⑥ 為什麼有的dll里沒有導出函數
dll里如果把函數設為隱式導出,用depend或者execope是看不到的.
回樓上:
一是使用.def文件;
二是使用_declspec(dllexport)
對於第一種DEF方式,你可以設置導出dll的函數的NONAME屬性,這樣就給每個函數編了一個序號.外部程序要用dll的函數時,不直接調用函數名,而是用序號來調用.而且外部程序是無法直接看到dll函數名的,只能看到序號.
⑦ 如何從 DLL 導出數據
1)包含頭文件
2)#pragma comment(lib, "xxx.lib")//導入lib
如果僅僅是考慮dll導入導出問題的話,def文件等於_declspec(dllexport)語句。
_declspec(dllexport)語句是告訴編譯器,在製作dll文件時,要導出的函數名或變數名,並且在編譯器中已經設置要導出lib文件。如果在dll文件中未聲明_declspec(dllexport),則即使編譯器設置了要導出lib文件,lib文件也不會被創建。因此,要生成lib文件,必須指定_declspec(dllexport)和編譯器導出lib文件這兩件事情。
當然,如果dll文件未指定_declspec(dllexport),則必須自建def文件,告訴編譯器要在lib中生成被導出的函數和/或變數。
def文件能做的事情遠遠比_declspec(dllexport)指令能做的事情多。
應該知道,被導出的函數,在應用程序中調用時,1可以通過函數名調用,2可以通過序數調用!
2的做法很少見。如果要通過序數來導出dll文件中的函數,則定義def文件時非常方便的。
如果樓主喜歡「魔獸爭霸」的話,看下「魔獸」的文件--storm.dll,可以發現裡面全是用序數導出函數的,沒有函數名。這個在商業軟體中很常見,因此2的做法其實是很普遍,也很實用的做法--通過序數導出函數
⑧ 怎樣導出DLL文件
DLL是Dynamic Link Library的縮寫,意為動態鏈接庫。在Windows中,許多應用程序並不是一個完整的可執行文件,它們被分割成一些相對獨立的動態鏈接庫,即DLL文件,放置於系統中。當我們執行某一個程序時,相應的DLL文件就會被調用。一個應用程序可有多個DLL文件,一個DLL文件也可能被幾個應用程序所共用,這樣的DLL文件被稱為共享DLL文件。DLL文件一般被存放在C:WindowsSystem目錄下。DLL 是一個包含可由多個程序同時使用的代碼和數據的庫。例如,在 Windows 操作系統中,Comdlg32 DLL 執行與對話框有關的常見函數。因此,每個程序都可以使用該 DLL 中包含的功能來實現「打開」對話框。這有助於促進代碼重用和內存的有效使用。通過使用 DLL,程序可以實現模塊化,由相對獨立的組件組成。例如,一個計帳程序可以按模塊來銷售。可以在運行時將各個模塊載入到主程序中(如果安裝了相應模塊)。因為模塊是彼此獨立的,所以程序的載入速度更快,而且模塊只在相應的功能被請求時才載入。此外,可以更為容易地將更新應用於各個模塊,而不會影響該程序的其他部分。例如,您可能具有一個工資計算程序,而稅率每年都會更改。當這些更改被隔離到 DLL 中以後,您無需重新生成或安裝整個程序就可以應用更新。 http://ke..com/view/230750.htm【網路】DLL文件(Dynamic Linkable Library 即動態鏈接庫文件),是一種不能單獨運行的文件,它允許程序共享執行特殊任務所必需的代碼和其他資源比較大的應用程序都由很多模塊組成,這些模塊分別完成相對獨立的功能,它們彼此協作來完成整個軟體系統的工作。可能存在一些模塊的功能較為通用,在構造其它軟體系統時仍會被使用。在構造軟體系統時,如果將所有模塊的源代碼都靜態編譯到整個應用程序 EXE 文件中,會產生一些問題:一個缺點是增加了應用程序的大小,它會佔用更多的磁碟空間,程序運行時也會消耗較大的內存空間,造成系統資源的浪費;另一個缺點是,在編寫大的 EXE 程序時,在每次修改重建時都必須調整編譯所有源代碼,增加了編譯過程的復雜性,也不利於階段性的單元測試。Windows 系統平台上提供了一種完全不同的較有效的編程和運行環境,你可以將獨立的程序模塊創建為較小的 DLL 文件,並可對它們單獨編譯和測試。在運行時,只有當 EXE 程序確實要調用這些 DLL 模塊的情況下,系統才會將它們裝載到內存空間中。這種方式不僅減少了 EXE 文件的大小和對內存空間的需求,而且使這些 DLL 模塊可以同時被多個應用程序使用。Windows 自己就將一些主要的系統功能以 DLL 模塊的形式實現。一般來說,DLL 是一種磁碟文件,以.dll、.DRV、.FON、.SYS 和許多以 .EXE 為擴展名的系統文件都可以是 DLL。它由全局數據、服務函數和資源組成,在運行時被系統載入到調用進程的虛擬空間中,成為調用進程的一部分。如果與其它 DLL 之間沒有沖突,該文件通常映射到進程虛擬空間的同一地址上。DLL 模塊中包含各種導出函數,用於向外界提供服務。DLL 可以有自己的數據段,但沒有自己的堆棧,使用與調用它的應用程序相同的堆棧模式;一個 DLL 在內存中只有一個實例;DLL 實現了代碼封裝性;DLL 的編制與具體的編程語言及編譯器無關。常用工具軟體下載可以到5151軟體園