詳解dll動態(tài)庫的開發(fā)與調(diào)用及文件的讀寫小程序
詳解dll動態(tài)庫的開發(fā)與調(diào)用及文件的讀寫小程序
首先我們先來學(xué)習(xí)一下動態(tài)庫的調(diào)用,先找到動態(tài)庫的.dll和.lib文件并將其導(dǎo)入到同源文件相同級別的文件夾下面,然后在添加進(jìn)其頭文件,并右擊項目處,然后點擊鏈接,鏈接我們的lib文件(一定要是全名稱包括擴(kuò)展名),然后我們就可以調(diào)用動態(tài)庫的函數(shù)了。
Dll是我們具體的函數(shù), lib使我們的函數(shù)描述文件。
#include <stdio.h> #include <stdlib.h> /* 該代碼是對文件讀寫操作的使用 */ #pragma warning(disable:4996) #define MAX_DATA_LEN 4096 //進(jìn)行加密的函數(shù) int FileSymEnc(char * from, char * to); void main() { char * from = "C:/Users/Administrator/Desktop/結(jié)構(gòu)體的拷貝問題.docx"; char * to = "C:/Users/Administrator/Desktop/副本結(jié)構(gòu)體的拷貝問題.docx"; //下面調(diào)用函數(shù)進(jìn)行文件的讀寫 int re = FileSymEnc(from, to); if (re == 0) { printf("文件讀寫錯誤!"); } system("pause"); } int FileSymEnc(char * from, char * to) { //返回值,以確定執(zhí)行狀態(tài),-0代表失敗,1代表成功 int re = 1; //寫了幾個 int writtenLen = 0; //準(zhǔn)備寫幾個 int plainlen = 0; //在堆區(qū)分配4k內(nèi)存空間 unsigned char * buff = malloc(MAX_DATA_LEN); buff = memset(buff, 0, MAX_DATA_LEN); FILE * f = fopen(from, "rb"); FILE * t = fopen(to, "wb"); if (f == NULL) { printf("打開讀文件錯誤!"); goto END; } if (t == NULL) { printf("打開寫文件錯誤!"); goto END; } while (!feof(f)) { writtenLen = fread(buff, 1, MAX_DATA_LEN, f); //判讀是否讀到了文件末尾,如果讀到了則跳出循環(huán) if (feof(f)) { plainlen = writtenLen; break; } if (writtenLen != MAX_DATA_LEN) { //沒有讀取成功 printf("文件讀入失敗!"); re = 0; goto END; } //讀取成功進(jìn)行文件的寫入 writtenLen = fwrite(buff, 1, MAX_DATA_LEN, t); if (writtenLen != MAX_DATA_LEN) { printf("文件寫入失敗!"); re = 0; goto END; } } //外面處理不到4K的寫入問題,我們本不用進(jìn)行格外的小數(shù)據(jù)讀寫,主不過這和我們的加密方式相關(guān)連得 writtenLen = fwrite(buff, 1, plainlen, t); if (writtenLen != plainlen) { printf("文件寫入失??!"); re = 0; goto END; } END: //堆分配的內(nèi)存進(jìn)行釋放 if (buff != NULL) { free(buff); buff = NULL; } //進(jìn)行文件的關(guān)閉操作 if (f != NULL) { fclose(f); f = NULL; } if (t != NULL) { fclose(t); f = NULL; } return re; }
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Linux動態(tài)庫函數(shù)的詳解
- Linux靜態(tài)庫與動態(tài)庫實例詳解
- android studio2.3如何編譯動態(tài)庫的過程詳解
- Linux下g++編譯與使用靜態(tài)庫和動態(tài)庫的方法
- Linux環(huán)境g++編譯GDAL動態(tài)庫操作方法
- 解決Linux程序編譯鏈接動態(tài)庫版本的相關(guān)問題
- xcode 詳解創(chuàng)建靜態(tài)庫和動態(tài)庫的方法
- 淺談Linux C語言動態(tài)庫及靜態(tài)庫
- c++實現(xiàn)加載so動態(tài)庫中的資源
- linux 程序、動態(tài)庫、靜態(tài)庫內(nèi)部添加版本號和編譯時間詳解
- 從源碼編譯Android系統(tǒng)的Java類庫和JNI動態(tài)庫的方法
- C#調(diào)用非托管動態(tài)庫中的函數(shù)方法
- Visual Studio中根據(jù)系統(tǒng)區(qū)分引用64位、32位DLL動態(tài)庫文件的配置方法
- 動態(tài)庫調(diào)用靜態(tài)庫示例講解
- linux生成(加載)動態(tài)庫靜態(tài)庫和加載示例方法
- 深入探討Linux靜態(tài)庫與動態(tài)庫的詳解(一看就懂)
- 分析Windows和Linux動態(tài)庫
- 在動態(tài)庫和靜態(tài)庫中使用模板(dynamic libraries ,static libraries)
相關(guān)文章
C++ 冒泡排序數(shù)據(jù)結(jié)構(gòu)、算法及改進(jìn)算法
冒泡排序是一種簡單排序。這種排序是采用“冒泡策略”將最大元素移到最右邊。在冒泡過程中,相鄰兩個元素比較,如果左邊大于右邊的,則進(jìn)行交換兩個元素。這樣一次冒泡后,可確保最大的在最右邊。然后執(zhí)行n次冒泡后排序即可完畢2013-04-04c語言中malloc、realloc與calloc 的區(qū)別以及聯(lián)系
以下是對c語言中的malloc函數(shù),realloc函數(shù)與calloc函數(shù)的區(qū)別以及它們之間的聯(lián)系進(jìn)行了介紹,需要的朋友可以過來參考下2013-08-08c語言程序設(shè)計文件操作方法示例(CreateFile和fopen)
c主要的文件操作函數(shù)有:CreateFile,CloseHandle,ReadFile,WriteFile,SetFilePointer,GetFileSize。其中的讀寫操作是以字符為單位,獲得文件大小也是以字符為單位。2013-12-12

SQL Server中的數(shù)據(jù)復(fù)制到的Access中的函數(shù)