作業系統: win7 ;ide: vs2010 express(學習版)1.1 建立解決方案mydll_demo,空專案mydll;
1.2 設定mydll專案屬性的配置型別為」動態庫(.dll)」(配置屬性->常規->配置型別);
1.3 向mydll專案中新增檔案mydll.h,mydll.c,檔案內容如下:
mydll.h
#ifndef mydll_h_
#define mydll_h_
#ifdef mydll_export
#define mydll_api __declspec(dllexport)
#else
#define mydll_api __declspec(dllimport)
#endif
#ifdef __cplusplus
extern
"c"
#endif
#endif
mydll.c
#include "mydll.h"
mydll_api double add(double param1, double param2)
1.4 設定mydll專案預定義巨集(配置屬性->c/c++->預處理器->預處理器定義)
1.5 編譯生成mydll.lib、mydll.dll(預設解決方案debug目錄)
備註:mydll.h
編譯巨集的設定參考googletest -> gtest-port.h
// gtest_api_ qualifies all symbols that must be exported. the definitions below
// are guarded by #ifndef to give embedders a chance to define gtest_api_ in
// gtest/internal/custom/gtest-port.h
#ifndef gtest_api_
#ifdef _msc_ver
# if gtest_linked_as_shared_library
# define gtest_api_ __declspec(dllimport)
# elif gtest_create_shared_library
# define gtest_api_ __declspec(dllexport)
# endif
#elif __gnuc__ >= 4 || defined(__clang__)
# define gtest_api_ __attribute__((visibility ("default")))
#endif // _msc_ver
#endif // gtest_api_
#ifndef gtest_api_
# define gtest_api_
#endif // gtest_api_
2.1 向解決方案mydll_demo新增空的控制台(console)專案mydll_test
2.2 設定mydll_test專案屬性
2.2.1 vc++ 目錄->包含目錄為mydll.h所在路徑;
2.2.2 vc++ 目錄->庫目錄為mydll.lib所在路徑;
2.2.3 鏈結器->輸入->附加依賴項為mydll.lib;
2.3 向mydll_test專案新增原始檔source.cpp,檔案內容如下:
#include "mydll.h"
#include
int main(void)
2.4 編譯生成mdll_test.exe,雙擊執行;
注意:如果提示丟失mydll.dll檔案,將mydll.dll拷貝到mdll_test.exe檔案所在目錄。
[1] declspec(dllexport)和declspec(dllimport) 的使用說明
[2] windows c++中__declspec(dllexport)的使用
[3] vs2013下靜態鏈結庫(lib)和動態鏈結庫(dll)的生成與使用
[4] vs2010下靜態鏈結庫和動態鏈結庫的生成和使用
VS2015 動態鏈結庫 靜態鏈結庫
首先介紹一下靜態庫 靜態鏈結庫 動態庫 動態鏈結庫 的概念,首先兩者都是 共享的方式。靜態庫 在鏈結步驟中,聯結器將從庫檔案取得所需的 複製到生成的可執行檔案中,這種庫稱為靜態庫,其特點是可執行檔案中包含了庫 的乙份完整拷貝 缺點就是被多次使用就會有多份冗餘拷貝。即靜態庫中的指令都全部被直接包含在最...
live555原始碼編譯(win7 vs2010)
環境 windows7 vs2010 2 更改配置檔案 解壓後進入live資料夾,去掉檔案win32config的唯讀屬性,編輯該檔案。將tools32更改為 tools32 c program files microsoft visual studio 10.0 vc 將link opts 0選項...
MFC動態鏈結庫和WIN32動態鏈結庫
1 dll的構成 每個應用程式都有乙個入口函式winmain,而每個dll也有乙個入口函式dllmain。dll跟應用程式一樣都含有資源 資料段和 段。dll跟應用程式的差別主要是dll有符號輸入表和符號輸出表,以方便應用程式呼叫dll中的函式。因為dll是由應用程式載入的,所以它本身沒有虛擬的記憶...