c Lib Dll及相關標頭檔案關係和怎麼操作

2021-06-12 21:50:49 字數 1091 閱讀 3669

一、動態庫大體使用過程:

(1)dll中匯出類、函式、物件

1. 建立乙個空的win32 dynamic-link library專案test

2. 在專案中新增乙個test.h標頭檔案,該檔案的內容如下:

//匯出類

class __declspec(dllexport) ctest

//匯出函式

__declspec(dllexport) void functest();

//匯出物件

extern __declspec(dllexport) ctest  objtest;

這段**中通過__declspec(dllexport)匯出了類ctest、函式functest和物件objtest。在.cpp檔案中實現上面的宣告與類的定義後,經編譯就可以生成乙個.dll和.lib檔案了。

(2)靜態載入dll

1. 新建乙個win32 專案。

2. 將上面編譯生成的.lib檔案複製到,該專案下。

3. 在專案中新增乙個test.h(通過該檔案實現對dll的靜態載入),該.h檔案的內容主要是從dll的.h檔案中複製過來。具體內容如下:

#pragma comment(lib, "test.lib")

//匯入類

class __declspec(dllimport) ctest

//匯入函式

__declspec(dllimport) void functest();

//匯入物件

extern __declspec(dllimport) ctest  objtest;

這個.h檔案與dll的.h的不同就是,在開頭加了#pragma comment(lib, "test.lib"),以及類、函式、物件前面的__declspec(dllexport)變成了__declspec(dllimport) 。通過這些修改就可以告訴編譯器,這個.h檔案中定義的類、宣告的函式和物件都是從test.dll中匯入的。在專案中完成對這些類、函式、物件的呼叫**後,就可以將其編譯成可執行檔案。將生成的可執行為檔案、以及上面生成的. dll檔案複製到同乙個資料夾中就可以正常執行這個可執行檔案。

Linux下Socket相關標頭檔案總結

一 三種型別的套接字 1.流式套接字 socket stream 提供面向連線的可靠的資料傳輸服務。資料被看作是位元組流,無長度限制。例如ftp協議就採用這種。2.資料報式套接字 socket dgram 提供無連線的資料傳輸服務,不保證可靠性。3.原始式套接字 socket raw 該介面允許對較...

有關標頭檔案「stdafx h」的問題的解決

由於經常使用vs編寫程式,所以會遇到很多的問題。在此總結了一些在使用vs編寫c 的常見的問題和解決方法提供給大家參考。編譯語言 c 編譯環境 vs2015 在使用vs時會遇到的常見問題 只是為什麼呢?因為在vc6.0等編譯環境中,他們不會進行程式的框架擴充套件所以他們本身沒有stdafx.h這個標頭...

標頭檔案相關函式

2.6.30.4的標頭檔案的位置和2.6.25.8的不一樣,除去核心原始碼下的include目錄外,在arch arm mach s3c2410 和arch arm plat s3c24xx 目錄下都有include目錄的。include 是在linux include linux下面尋找原始檔。i...