當前位置:首頁 » 操作系統 » dll連接資料庫

dll連接資料庫

發布時間: 2022-06-03 06:22:45

1. 什麼是動態連接數據DLL,靜態鏈接資料庫LIB

DLL--一種特殊的可執行文件,但往往需要.EXE文件調用
LIB--和源代碼一起編譯的文件,譬如金山公司給你壓縮解壓縮程序,不可能給你源代碼,你可以使用,她會提供你:DLL,LIB等所謂API的軟體包,待LIB文件編譯到你的源代碼中,並形成.EXE後,LIB文件就不需要了,以後的運行,需要.EXE .DLL

2. 如何查看DLL中的資料庫

後綴為dll的資料庫文件為動態鏈接庫,要載入到軟體上才能用。

附:DLL文件(Dynamic Linkable Library 即動態鏈接庫文件),是一種不能單獨運行的文件,它允許程序共享執行特殊任務所必需的代碼和其他資源
比較大的應用程序都由很多模塊組成,這些模塊分別完成相對獨立的功能,它們彼此協作來完成整個軟體系統的工作。可能存在一些模塊的功能較為通用,在構造其它軟體系統時仍會被使用。在構造軟體系統時,如果將所有模塊的源代碼都靜態編譯到整個應用程序 EXE 文件中,會產生一些問題:一個缺點是增加了應用程序的大小,它會佔用更多的磁碟空間,程序運行時也會消耗較大的內存空間,造成系統資源的浪費;另一個缺點是,在編寫大的 EXE 程序時,在每次修改重建時都必須調整編譯所有源代碼,增加了編譯過程的復雜性,也不利於階段性的單元測試。
Windows 系統平台上提供了一種完全不同的較有效的編程和運行環境,你可以將獨立的程序模塊創建為較小的 DLL 文件,並可對它們單獨編譯和測試。在運行時,只有當 EXE 程序確實要調用這些 DLL 模塊的情況下,系統才會將它們裝載到內存空間中。這種方式不僅減少了 EXE 文件的大小和對內存空間的需求,而且使這些 DLL 模塊可以同時被多個應用程序使用。Windows 自己就將一些主要的系統功能以 DLL 模塊的形式實現。

3. 電腦常識:Dll資料庫是什麼,其作用是

你好朋友;
dll文件是資料庫鏈接文件;
動態鏈接庫
動態鏈接庫文件動態鏈接庫英文為DLL,是Dynamic Link Library 的縮寫形式,DLL是一個包含可由多個程序同時使用的代碼和數據的庫,DLL不是可執行文件。動態鏈接提供了一種方法,使進程可以調用不屬於其可執行代碼的函數。函數的可執行代碼位於一個 DLL 中,該 DLL 包含一個或多個已被編譯、鏈接並與使用它們的進程分開存儲的函數。DLL 還有助於共享數據和資源。多個應用程序可同時訪問內存中單個DLL 副本的內容。DLL 是一個包含可由多個程序同時使用的代碼和數據的庫。

目錄

簡介
DLL 優點
DLL文件損壞
DLL 依賴項
DLL 入口點
導出 DLL 函數兩種方法
特別調用
DLL內容說明
DLL錯誤的危害
DLL修復方法
dll木馬原理簡介
DLL 優點
DLL文件損壞
DLL 依賴項
DLL 入口點
導出 DLL 函數 兩種方法
特別調用
DLL內容說明
DLL錯誤的危害
DLL修復方法
dll木馬原理展開 編輯本段簡介
動態鏈接庫可以更為容易地將更新應用於各個模塊,而不會影響該程序的其他部分。例如,您有一個大型網路游戲,如果把整個數百MB甚至數GB的游戲的代碼都放在一個應用程序里,日後的修改工作將會十分費時,而如果把不同功能的代碼分別放在數個動態鏈接庫(DLL)中,您無需重新生成或安裝整個程序就可以應用更新。 下表說明了 Windows 操作系統中的一些作為 DLL 實現的文件: · ActiveX控制項(.ocx) 文件 ActiveX 控制項的一個示例是日歷控制項,它使您可以從日歷中選擇日期。 動態鏈接庫
· 控制面板(.cpl) 文件 .cpl 文件的一個示例是位於控制面板中的項。每個項都是一個專用 DLL。 · 設備驅動程序(.drv) 文件 設備驅動程序的一個示例是控制列印到列印機的列印機驅動程序。
DLL 優點
1、擴展了應用程序的特性; 2、可以用許多種編程語言來編寫; 3、簡化了軟體項目的管理; 4、有助於節省內存; 5、有助於資源共享; 6、有助於應用程序的本地化; 7、有助於解決平台差異; 8、可以用於一些特殊的目的。windows使得某些特性只能為DLL所用。
編輯本段DLL文件損壞
當前木馬病毒經常感染或者替換系統文件dll文件,部分安全工具查殺後並未對dll文件進行系統修復,所以經常會出現以下現象: 1、網路游戲打不開 2、電腦沒聲音 3、電腦藍屏 4、桌面無法顯示 dll圖標
5、主頁被修改為網址導航 6、桌面圖標無法刪除(淘寶、小游戲、電影等等,重啟同樣不能正常刪除)
DLL 依賴項
當某個程序或 DLL 使用其他 DLL 中的 DLL 函數時,就會創建依賴項。因此,該程序就不再是獨立的,並且如果該依賴項被損壞,該程序就可能遇到問題。例如,如果發生下列操作之一,則該程序可能無法運行: · 依賴 DLL 升級到新版本。 · 修復了依賴 DLL。 · 依賴 DLL 被其早期版本覆蓋。 · 從計算機中刪除了依賴 DLL。 這些操作通常稱為 DLL 沖突。如果沒有強制實現向後兼容性,則該程序可能無法成功運行。
編輯本段DLL 入口點
在創建 DLL 時,可以有選擇地指定入口點函數。當進程或線程將它們自身附加到 DLL 或者將它們自身從 DLL 分離時,將調用入口點函數。您可以使用入口點函數根據 DLL 的需要來初始化數據結構或者銷毀數據結構。此外,如果應用程序是多線程的,則可以在入口點函數中使用線程本地存儲 (TLS) 來分配各個線程專用的內存。下面的代碼是一個 DLL 入口點函數的示例: BOOL APIENTRY DllMain( HANDLE hMole, // Handle to DLL mole DWORD ul_reason_for_call, // Reason for calling function LPVOID lpReserved ) // Reserved { switch ( ul_reason_for_call ) { case DLL_PROCESS_ATTACHED: // A process is loading the DLL. break; case DLL_THREAD_ATTACHED: // A process is creating a new thread. break; case DLL_THREAD_DETACH: // A thread exits normally. break; case DLL_PROCESS_DETACH: // A process unloads the DLL. break; } return TRUE; } 當入口點函數返回 FALSE 值時,如果您使用的是載入時動態鏈接,則應用程序不啟動。如果您使用的是運行時動態鏈接,則只有個別 DLL 不會載入。 入口點函數只應執行簡單的初始化任務,不應調用任何其他 DLL 載入函數或終止函數。例如,在入口點函數中,不應直接或間接調用 LoadLibrary 函數或 LoadLibraryEx 函數。此外,不應在進程終止時調用 FreeLibrary 函數。 注意:在多線程應用程序中,請確保將對 DLL 全局數據的訪問進行同步(線程安全),以避免可能的數據損壞。為此,請使用 TLS 為各個線程提供唯一的數據。
導出 DLL 函數
要導出 DLL 函數,您可以向導出的 DLL 函數中添加函數關鍵字,也可以創建模塊定義文件(.def) 以列出導出的 DLL 函數。
兩種方法
方法一、向導出的 DLL 函數中添加函數關鍵字 要使用函數關鍵字,您必須使用以下關鍵字來聲明要導出的各個函數: __declspec(dllexport) 要在應用程序中使用導出的 DLL 函數,您必須使用以下關鍵字來聲明要導入的各個函數: __declspec(dllimport) 通常情況下,您最好使用一個包含 define 語句和 ifdef 語句的頭文件,以便分隔導出語句和導入語句。 方法二、創建模塊定義文件 (.def) 以列出導出的 DLL 函數 使用模塊定義文件來聲明導出的 DLL 函數。當您使用模塊定義文件時,您不必向導出的 DLL 函數中添加函數關鍵字。在模塊定義文件中,您可以聲明 DLL 的 LIBRARY 語句和 EXPORTS 語句。
特別調用
關於特定情況下的調用,比如DLL函數中使用到了win32 API或者將C++生成的DLL供標准C語言使用,則需要注意以下一些情況: 如果使用到了win32 API,則應該使用調用方式為「__stdcall」。 在將C++生成的DLL供標准C語言使用,輸出文件需要用「extern "C"」修飾,否則不能被標准C語言調用。如果使用「__stdcall」調用方式,可能產生C不識別的修飾名,所以設置導出函數時要採用.def文件形式,而不是__declspec(dllexport)形式。後者會進行修飾名轉換,C語言無法識別函數。 下面的代碼是一個定義文件的示例。 // SampleDLL.def // LIBRARY "sampleDLL" EXPORTS HelloWorld示例 DLL 和應用程序XXXXXXXX在 Microsoft Visual C++6.0 中,可以通過選擇「Win32 動態鏈接庫」項目類型或「MFC 應用程序向導 (dll)」來創建 DLL。下面的代碼是一個在 Visual C++ 中通過使用「Win32 動態鏈接庫」項目類型創建的 DLL 的示例。 // SampleDLL.cpp //#include "stdafx.h" #define EXPORTING_DLL #include "sampleDLL.h" BOOL APIENTRY DllMain( HANDLE hMole, DWORD ul_reason_for_call, LPVOID lpReserved) { return TRUE; } void HelloWorld(){ MessageBox( NULL, TEXT("Hello World"), TEXT("In a DLL"), MB_OK); } // File: SampleDLL.h //#ifndef INDLL_H #define INDLL_H #ifdef EXPORTING_DLLextern __declspec(dllexport) void HelloWorld() ; #elseextern __declspec(dllimport) void HelloWorld() ; #endif #endif 下面的代碼是一個「Win32 應用程序」項目的示例,該示例調用 SampleDLL DLL 中的導出 DLL 函數。 // SampleApp.cpp //#include "stdafx.h" #include "sampleDLL.h" int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { HelloWorld(); return 0; } 注意:在載入時動態鏈接中,您必須鏈接在生成 SampleDLL 項目時創建的 SampleDLL.lib 導入庫。 在運行時動態鏈接中,您應使用與以下代碼類似的代碼來調用 SampleDLL.dll 導出 DLL 函數。 ... typedef VOID (*DLLPROC) (LPTSTR); ... HINSTANCE hinstDLL; DLLPROC HelloWorld; BOOL fFreeDLL; hinstDLL = LoadLibrary("sampleDLL.dll"); if (hinstDLL != NULL) { HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld"); if (HelloWorld != NULL) (HelloWorld); fFreeDLL = FreeLibrary(hinstDLL); } ...
DLL內容說明
KERNEL32.DLL ---- 低級內核函數。使用他可以完成內存管理、任務管理、 資源控制等。 USER32.DLL------與windows管理有關的函數。消息、菜單、游標、計時器 、通信和其他大多數非現實函數都可以從這里找到 GDI32.DLL-------圖形設備介面庫。於設備輸出有關的函數:大多數繪圖 、顯示場景、圖元文件、坐標及其字體函數都可以從這里找到。 COMDLG32.DLL\LZ32.DLL\VERSION.DLL\---這都是提供一些附加函數的庫,包 括通用對話框、文件壓縮、版本控制的支持。 COMCTL32.DLL --------一個新的windows控制項集合,比如TreeView和RichTextBox 等等,最初這個是為了win95而製作的,但是現在也使用與NT下 MAPI32.DLL---------提供了一套電子郵件的專用函數 NETAPI32.DLL--------提供了一套訪問和控制網路的函數 ODBC32.DLL--------ODBC功能的DLL之DLL(Delay Locked Loop,延時鎖定迴路提供一個數據濾波信號)
DLL錯誤的危害
系統文件auditpolicygpinterop.dll出錯,是由於木馬病毒、或不小心下載了流氓軟體被感染所致。而該文件又是系統/程序正常運行的前提條件,所以一旦不幸被感染,通常會伴隨下幾種情況: 1、桌面圖標無法刪除(淘寶、小游戲、電影等等,重啟同樣不能正常刪除) 2、網路游戲打不開(DNF,穿越火線,魔獸世界等等) 3、電腦無故藍屏 4、電腦沒聲音 5、桌面無法顯示 6、主頁被修改為網址導航 7、一些程序無法正常使用(比如雙擊無響應等一系列情況)
DLL修復方法
部分.dll缺失可以從其他電腦或者網上上下載拷貝到,c盤windows目錄下來完成修復。 auditpolicygpinterop.dll出錯,很多是因為中了流氓軟體的招,如果不太了解系統,不知道應該把auditpolicygpinterop.dll放在哪,那麼建議使用修復工具對系統進行最全面的掃描和修復。
dll木馬原理
DLL是編譯好的代碼,與一般程序沒什麼大差別,只是它不能獨立運行,需要程序調用。那麼,DLL與木馬能扯上什麼關系呢?如果你學過編程並且寫過DLL,就會發現,其實DLL的代碼和其他程序幾乎沒什麼兩樣,僅僅是介面和啟動模式不同,只要改動一下代碼入口,DLL就變成一個獨立的程序了。當然,DLL文件是沒有程序邏輯的,這里並不是說DLL=EXE,不過,依然可以把DLL看做缺少了main入口的EXE,DLL帶的各個功能函數可以看作一個程序的幾個函數模塊。DLL木馬就是把一個實現了木馬功能的代碼,加上一些特殊代碼寫成DLL文件,導出相關的API,在別人看來,這只是一個普通的DLL,但是這個DLL卻攜帶了完整的木馬功能,這就是DLL木馬的概念。也許有人會問,既然同樣的代碼就可以實現木馬功能,那麼直接做程序就可以,為什麼還要多此一舉寫成DLL呢?這是為了隱藏,因為DLL運行時是直接掛在調用它的程序的進程里的,並不會另外產生進程,所以相對於傳統EXE木馬來說,它很難被查到

4. 後綴為dll的資料庫文件怎樣解讀

後綴為dll的資料庫文件為動態鏈接庫,要載入到軟體上才能用。

附: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 的編制與具體的編程語言及編譯器無關。
在 Win32 環境中,每個進程都復制了自己的讀/寫全局變數。如果想要與其它進程共享內存,必須使用內存映射文件或者聲明一個共享數據段。DLL 模塊需要的堆棧內存都是從運行進程的堆棧中分配出來的。Windows 在載入 DLL 模塊時將進程函數調用與 DLL 文件的導出函數相匹配。Windows 操作系統對 DLL 的操作僅僅是把 DLL 映射到需要它的進程的虛擬地址空間里去。DLL 函數中的代碼所創建的任何對象(包括變數)都歸調用它的線程或進程所有。
調用方式:
1、靜態調用方式:由編譯系統完成對 DLL 的載入和應用程序結束時 DLL 卸載的編碼(如還有其它程序使用該 DLL,則 Windows 對 DLL 的應用記錄減1,直到所有相關程序都結束對該 DLL 的使用時才釋放它,簡單實用,但不夠靈活,只能滿足一般要求。
隱式的調用:需要把產生動態連接庫時產生的 .LIB 文件加入到應用程序的工程中,想使用 DLL 中的函數時,只須說明一下。隱式調用不需要調用 LoadLibrary() 和 FreeLibrary()。程序員在建立一個 DLL 文件時,鏈接程序會自動生成一個與之對應的 LIB 導入文件。該文件包含了每一個 DLL 導出函數的符號名和可選的標識號,但是並不含有實際的代碼。LIB 文件作為 DLL 的替代文件被編譯到應用程序項目中。
當程序員通過靜態鏈接方式編譯生成應用程序時,應用程序中的調用函數與 LIB 文件中導出符號相匹配,這些符號或標識號進入到生成的 EXE 文件中。LIB 文件中也包含了對應的 DL L文件名(但不是完全的路徑名),鏈接程序將其存儲在 EXE 文件內部。
當應用程序運行過程中需要載入 DLL 文件時,Windows 根據這些信息發現並載入 DLL,然後通過符號名或標識號實現對 DLL 函數的動態鏈接。所有被應用程序調用的 DLL 文件都會在應用程序 EXE文件載入時被載入在到內存中。可執行程序鏈接到一個包含 DLL 輸出函數信息的輸入庫文件(.LIB文件)。操作系統在載入使用可執行程序時載入 DLL。可執行程序直接通過函數名調用 DLL 的輸出函數,調用方法和程序內部其 它的函數是一樣的。
2、動態調用方式:是由編程者用 API 函數載入和卸載 DLL 來達到調用 DLL 的目的,使用上較復雜,但能更加有效地使用內存,是編制大型應用程序時的重要方式。
顯式的調用:
是指在應用程序中用 LoadLibrary 或 MFC 提供的 AfxLoadLibrary 顯式的將自己所做的動態連接庫調進來,動態連接庫的文件名即是上面兩個函數的參數,再用 GetProcAddress() 獲取想要引入的函數。自此,你就可以象使用如同本應用程序自定義的函數一樣來調用此引入函數了。在應用程序退出之前,應該用 FreeLibrary 或 MFC 提供的 AfxFreeLibrary 釋放動態連接庫。直接調用 Win32 的 LoadLibary 函數,並指定 DLL 的路徑作為參數。LoadLibary 返回 HINSTANCE 參數,應用程序在調用 GetProcAddress 函數時使用這一參數。GetProcAddress 函數將符號名或標識號轉換為 DLL 內部的地址。程序員可以決定 DLL 文件何時載入或不載入,顯式鏈接在運行時決定載入哪個 DLL 文件。使用 DLL 的程序在使用之前必須載入(LoadLibrary)載入DLL從而得到一個DLL模塊的句柄,然後調用 GetProcAddress 函數得到輸出函數的指針,在退出之前必須卸載DLL(FreeLibrary)。
正因為DLL 有佔用內存小,好編輯等的特點有很多電腦病毒都是DLL格式文件。但不能單獨運行。
動態鏈接庫通常都不能直接運行,也不能接收消息。它們是一些獨立的文件,其中包含能被可執行程序或其它DLL調用來完成某項工作的函數。只有在其它模塊調用動態鏈接庫中的函數時,它才發揮作用。

5. vb動態鏈接庫dll連接資料庫 asp文件調用問題

newConn在引用前既沒有聲明,也沒有賦值,是不是應給改為ConnDll 啊

6. 如何修復windows系統中dll動態鏈接庫錯誤:系

如何修復,WINDOWS系統中dll動態鏈接資料庫一般遇到這種情況,我建議還是把具體的dll文件進行備份才可以。

7. 易語言dll 如何進行sql鏈接和操作資料庫

可以嘗試使用騰訊電腦管家來修復缺失DLL文件
1、打開騰訊電腦管家
2、電腦診所
3、軟體問題
4、丟失.Dll 文件
5、一鍵修復
6、完成
如果還是解決不了,去下一個文件直接復制進去就能搞定了

8. windows64位系統注冊delphi開發Dll連接資料庫失敗

應該是沒有做部署——也就是沒再別人的機器上建立相應的數據連接,不知道你使用的是什麼資料庫採用什麼方式連接的,一般delphi的資料庫連接方式有兩種,1)就是使用windows默認的數據介面odoc(好想是,記不太准名稱)在別的機器使用時,需要建立相應的數據連接
第二種就是delphi自帶的數據連接程序,在另外機器使用需要安裝那個資料庫連接程序,在設置相應的操作。
使用delphi自帶的安裝程序生產工具默認是不會附帶資料庫連接的相應dll,需要自己手動添加。

9. 如何將資料庫連接和訪問做到一個DLL裡面

將資料庫組件封裝到動態庫中,拋出資料庫的連接,查詢,執行等介面

熱點內容
刪除手機瀏覽器緩存的視頻在哪裡 發布:2024-10-30 11:13:45 瀏覽:246
電腦換配置什麼不用換 發布:2024-10-30 11:11:58 瀏覽:976
ifelseifsql 發布:2024-10-30 11:03:13 瀏覽:127
android70三星 發布:2024-10-30 10:56:59 瀏覽:849
qt字元串加密 發布:2024-10-30 10:26:12 瀏覽:903
福建免費雲空間工具伺服器 發布:2024-10-30 10:25:06 瀏覽:460
安卓被拉黑是什麼意思 發布:2024-10-30 10:23:47 瀏覽:319
qq關漫遊為什麼要密碼 發布:2024-10-30 10:18:50 瀏覽:334
androidipad 發布:2024-10-30 10:13:28 瀏覽:578
皮箱密碼忘記如何更換 發布:2024-10-30 10:02:04 瀏覽:987