VC++加載動態庫和靜態庫

 

 

靜態庫包括.lib和.h文件,在工程中使用靜態庫分爲3步:

1在工程中加入靜態庫,有兩種方法:

方法一:項目設置中引用.lib,project-setting-link-object/library modules中添加.lib;(需要在tools/options設置正確的引用路徑)

方法二:在項目中直接加入lib,project-add to project-files,選擇正確的.lib。

2在工程中包括.h文件;(可能 需要在tools/options設置正確的引用路徑)

3在工程中使用靜態庫中的函數;--大功告成!

動態鏈接庫一般包括.lib(導出函數),.h,.dll,使用動態庫有兩種情況:

1隱式鏈接,同使用靜態庫相似,分爲三步:引用.lib,包含頭文件,使用導出函數;

2動態加載,直接使用LoadLibrary 加載所需的動態庫,然後指定所需的導出函數,效率最高!

 

BOOL CComm::Initial(int protocol)
{
 CString t;
 CreateProtocolF cp;
 
 if(m_protocol) 
  return TRUE;
 ReleaseResource();

 t=m_workdir+"xxx.dll";
 if(m_protocoldll==NULL)
 {
  m_protocoldll = LoadLibrary(t); //載入指定的動態鏈接庫,並將它映射到當前進程使用的地址空間。一旦載入,即可訪問庫內保存的資源,返回庫模塊的句柄
 }
 if( !m_protocoldll )
 {
  return FALSE;
 }
 cp = (CreateProtocolF)GetProcAddress( m_protocoldll, "CreateProtocol");
 m_protocol=cp(protocol);

 if(m_protocol)
 {
  return TRUE;
 }
 return FALSE;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章