stdafx.h
targetver.h
dllmain.cpp
libraryexercise.cpp //工程名
stdafx.cpp
// libraryexercise.cpp : 定義 dll 應用程式的匯出函式。
#include "stdafx.h"
_declspec(dllexport) int add(int a, int b)
#include //使用庫
#pragma comment(lib,"add.lib")
//宣告:此函式需從dll匯入
#define mydll _declspec(dllexport) //在編譯dll工程的.cpp檔案裡,定義巨集mydll_export
#else
#define mydll _declspec(dllimport) //在使用者工程的.cpp檔案裡,什麼都不用定義就行了
#endif
#include mydll int add (int a, int b);
#endif
#define mydll_export //預編譯規定「輸出選項」,用作編譯dll工程裡的cpp檔案
#include int add(int a, int b)
#include #include //此處不需任何其他巨集定義,h檔案中mydll自動被編譯為_declspec(import)
#pragma comment(lib, "mydll.lib")
int main(int argc, char** argv)
#include //c++中尖括號表示系統檔案,雙引號表示使用者自己的標頭檔案
在此檔案中儲存類的定義
#ifndef _my_class_dll_h
#define _my_class_dll_h
#ifdef mydll_export
#define mydll _declspec(dllexport)
#else
#define mydll _declspec(dllimport)
#endif
class mydll myobj //整個類的匯出和匯入只需此處用到mydll
#endif
#include #define mydll_export
#include "myclassdll.h"
//在cpp中定義的成員函式無需再使用關鍵字mydll匯出
myobj:: myobj(int v)
:value(v)
void myobj:: diplay()
目標工程cpp
//包含標頭檔案和lib後直接實用類建立物件
#include #include "myclassdll.h"
#pragma comment(lib, "myclassdll.lib")
int main(int argc, char** argv)
// mylib.h 靜態庫h檔案
#ifndef _mylib_h_
#define _mylib_h_
int add(int a, int b);
#endif
靜態庫cpp檔案
#include "mylib.h"
int add(int a, int b)
#include #include "mylib.h"
#pragma comment(lib, "mylib")
int main(int argc, char** argv)
#ifndef _mydll_h_
#define _mydll_h_
#include #ifdef mydll_export
#define mydll _declspec(dllexport)
#else
#define mydll _declspec(dllimport)
#endif
extern "c" mydll int add(int a, int b); //將函式宣告為乙個c函式
#endif
#include "mydll.h"
int add(int a, int b)
#include //包含windows相關標頭檔案
#include #include int main(int argc, char** argv)
}freelibrary(handle);
}
靜態庫 動態庫學習筆記
靜態庫 動態庫學習筆記 庫 是一種可執行 的二進位制形式,可被作業系統載入記憶體執行 是寫好的 現有的 完善的可複製的 庫可分為靜態庫 a或.lib 和動態庫 so或.dll 動靜之分是因為鏈結階段對庫的處理不一樣導致。程式編譯成可執行檔案的過程 預處理 編譯 彙編 鏈結 可執行檔案。靜態庫 在鏈結...
C 靜態庫與動態庫
感覺比較形象,就摘過來了.這次分享的 宗旨是 讓大家學會建立與使用靜態庫 動態庫,知道靜態庫與動態庫的區別,知道使用的時候如何選擇。這裡不深入介紹靜態庫 動態庫的底層格式,記憶體布局等,有興趣的同學,推薦一本書 程式設計師的自我修養 鏈結 裝載與庫 庫是寫好的現有的,成熟的,可以復用的 現實中每個程...
C 靜態庫與動態庫
庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll 所謂靜態 動態是指鏈結。回顧一下,將乙個程...