被迫營業 動態鏈結庫

2021-10-07 22:56:03 字數 2063 閱讀 8158

別問,問就是被迫營業

學新東西嘛,就要先去前輩那裡了解一下基本概念~

傳送門在這裡,客官請

總所周知,c_t是乙個實踐型選手

廢話不多說,今天就編寫乙個dll感受一下ta的魅力:

檔案 -> 新建 -> 專案 -> 選擇visual c++ -> windows桌面 -> 動態鏈結庫

我們可以觀察一下在新建的專案中,已經包含了兩個標頭檔案和兩個原始檔

// 從 windows 標頭檔案中排除極少使用的內容

// windows 標頭檔案

#include

// pch.h: 這是預編譯標標頭檔案。

// 下方列出的檔案僅編譯一次,提高了將來生成的生成效能。

// 這還將影響 intellisense 效能,包括**完成和許多**瀏覽功能。

// 但是,如果此處列出的檔案中的任何乙個在生成之間有更新,它們全部都將被重新編譯。

// 請勿在此處新增要頻繁更新的檔案,這將使得效能優勢無效。

#ifndef pch_h

#define pch_h

// 新增要在此處預編譯的標頭

#include

"framework.h"

#endif

//pch_h

// dllmain.cpp : 定義 dll 應用程式的入口點。

#include

"pch.h"

bool apientry dllmain

( hmodule hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

)return true;

}

// pch.cpp: 與預編譯標頭對應的原始檔

#include

"pch.h"

// 當使用預編譯的頭時,需要使用此原始檔,編譯才能成功。

新建.h和.cpp的方法不用多說

這裡我們編寫乙個彩色字型的輸出函式show()

#pragma once

// 保證標頭檔案只被編輯一次

__declspec

(dllexport)

void

show()

;// 在要輸出的函式前加上 __declspec(dllexport),表示輸出

// first.cpp

#include

"pch.h"

//新增預設標頭檔案

#include

"first.h"

#include

#include

using

namespace std;

void

show()

解決方案生成成功之後,我們可以在myfirstdll\debug目錄下看見dll和lib檔案

lib是我們寫在程式中新增的檔案,dll是我們在生成程式之後要使用的檔案

接下來的操作請按照步驟,慢慢來~

// test.cpp

#include

"first.h"

#include

intmain()

動態鏈結庫 靜態鏈結庫

包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...

靜態鏈結庫 動態鏈結庫

庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib dll ...

靜態鏈結庫,動態鏈結庫

關於靜態鏈結庫,參考如下博文 當你完成了 開發,想把這個 給別人用,但是又不希望別人看到原始碼,就要給別人乙個庫和標頭檔案,庫和標頭檔案是配合的,缺一不可。或者過程相反,你從別人那裡拿到乙個庫和標頭檔案來使用。那麼如何編譯生成乙個庫給他人,如何使用從他人那裡拿到的庫呢?範例1 我們想把linuxfr...