2018年7月12日 星期四

[C++]顯式連結、動態連結

宣告句柄與類定義的指標 宣告一個新函式替代原來的
在初始化的地方 
使用"LoadLibrary"呼叫dll
使用"GetProcAddress"定義函式
最後再要使用的地方 直接使用替代的函式 即可

==============================以下範例================================

HMODULE hmod;
typedef DXF_PARSE*(*MyAdd)();
typedef DXF_PREVIEW*(*MyAdd2)();
MyAdd Add;
MyAdd2 Add2;


寫在init

BOOL CDxftoNcfileDlg::OnInitDialog()
{
 CDialogEx::OnInitDialog();

 // TODO: 在此加入額外的初始設定
 
 hmod = LoadLibrary(L"DxfLib2.dll"); //load dll
 if (hmod == NULL)
 {
  return 0;
 }
  Add = (MyAdd)GetProcAddress(hmod, "GetParsesPtr");
 if (!Add) {
  MessageBox(L"error_GetParsesPtr");
  return 0;
 }
 Add2 = (MyAdd2)GetProcAddress(hmod, "GetPreviewsPtr");
 if (!Add2) {
  MessageBox(L"error_GetPreviewsPtr");
  return 0;
 }

 return TRUE;  // 傳回 TRUE,除非您對控制項設定焦點

}


再欲使用的地方加上直接替換
add()   
add2()


測試環境:MFC

沒有留言:

張貼留言

[SQL]顯示千分位與小數顯示

  CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) CONVERT style參數說明 1  (expression為 money 或 smallmoney型別): 0 : 預設,保留小數位後兩位,並四捨...