第十四章動態鏈結庫(visual c++6.0 程式設計例項與技巧)
一建立s14_dll
1 這個擴充套件mfc extension dll 向應用程式提供的功能有
(1) 建立工程
(2) 設計共享資料
#pragma data_seg(".myshareddata") //宣告乙個共享資料段用於程序使用dll的記數
int count=0;
#pragma data_seg()
在s14_檔案中使用sections語句設定.myshareddata的屬性
sections
.myshareddata shared
(3) 設計dllmain入口點函式
(4) 設計檢查呼叫次數的函式
(5)設計cdrawtext類
(6)新增cdrawtext類的成員變數
public: //attribute
logfont m_font; // 字型
colorref m_color; //顏色
cstring m_str顯示的文字內容
cpoint m_pt顯示的位置
(7)新增cdrawtext類的成員函式
public:
void serialize(carchive &ar序列化
void settext(cpoint pt,lpstr str); //設定位置和文字內容
void show(cdc *pdc用於顯示
; s14_ : declares the module parameters for the dll.
library "s14_dll"
description 's14_dll windows dynamic link library'
sections
.myshareddata shared
exports
; explicit exports can go here
judgeinstanceno @1
// s14_ : defines the initialization routines for the dll.
#include ""
#include <>
#ifdef _debug
#pragma data_seg(".myshareddata")
int count=0;
#pragma data_seg()
static afx_extension_module s14_dlldll = ;
extern "c" int apientry
dllmain(hinstance hinstance, dword dwreason, lpvoid lpreserved)
else if (dwreason == dll_process_detach)
return 1; // ok
}int judgeinstanceno() //判斷是第幾個應用程式例項呼叫dll
// inte***ce for the cdrawtext class.
#endif // _msc_ver > 1000
int judgeinstanceno(); //檢查呼叫次數的函式
//注意在類名前增加afx_ext_class巨集描述,要自己寫
class afx_ext_class cdrawtext : public cobject
;// implementation of the cdrawtext class.
#include ""
#include ""
#ifdef _debug
//允許動態建立物件,這個巨集要自己寫到程式中
implement_serial(cdrawtext,cobject,0)
cdrawtext::cdrawtext()
cdrawtext::~cdrawtext()
void cdrawtext::serialize(carchive &ar) //支援序列操作
else
}void cdrawtext::settext(cpoint pt,lpstr str) //設定位置和文字內容
void cdrawtext::show(cdc *pdc) //顯示函式
二 s14a_app應用程式例程
1建立乙個單文件
2設定使用s14a_dll 將s14a_dll工程加入到s14a_app工程的工作區(workspace)中。使用project/insert projects into workspace…選單彈出的對話方塊設定,如圖下。
使用project/dependencies…選單彈出的對話方塊設定
使用project/add to project |files…選單彈出的對話方塊將s14a_dll工程生成的s14a_檔案加入到s14a_app工程中,如下圖
使用project/setting…選單彈出的對話方塊,選擇post-build step
使用project/setting…選單彈出的對話方塊,選擇link標籤下,將兩個工程都選中generate debug info,以編譯win32 debug版本產生除錯資訊,如下圖
使用project/setting…選單彈出的對話方塊,選擇debug標籤下,category選擇additional dlls,為s14a_app工程選擇附加的s14_
靜態鏈結庫與動態鏈結庫區別
動態鏈結庫 dll不必被包含在最終的exe中,exe檔案執行時可以動態地引用和解除安裝dll檔案。同時,靜態鏈結庫中不能再包含其他的動態鏈結庫或靜態庫,而動態鏈結庫中可以包含其他的動態或靜態庫。vc 支援的dll dll的編制與具體的程式語言及編譯器無關,動態鏈結庫隨處可見,vc 支援三種dll 非...
動態鏈結庫dll學習總結
1.什麼是lib檔案,lib和dll的關係如何 1 lib是編譯時需要的,dll是執行時需要的。如果要完成源 的編譯,有lib就夠了。如果也使動態連線的程式執行起來,有dll就夠了。在開發和除錯階段,當然最好都有。2 一般的動態庫程式有lib檔案和dll檔案。lib檔案是必須在編譯期就連線到應用程式...
第十四章總結
2 基本內涵 海上風險 海上航行中發生的自然災害和意外事故。外來風險 海上風險意外的其他外來原因的風險 海損 海上航行中所遇到的損失。外來風險損失 海上風險意外的其他損失。3 保險公司的賠付原則 保險賠償原則有時也稱損失補償原則。保險賠償作為財產保險活動的最後環節,是保險雙方權利義務關係的核心內容,...