久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

怎樣在C++ Builder中創(chuàng)建使用DLL

 visionary555 2011-11-03
怎樣在C++ Builder中創(chuàng)建使用DLL

  動(dòng)態(tài)鏈接庫(kù)(DLL)是Windows編程常遇到的編程方法,,下面我就介紹一下在BCB (C++ Builder下簡(jiǎn)稱BCB) 中如何創(chuàng)建使用DLL和一些技巧。

  一,、創(chuàng)建:
  使用BCB File|NEW建立一個(gè)新的DLL工程,,并保存好文件BCB,生成一個(gè)DLL的程序框架,。
  1.DllEntryPoint函數(shù)為一個(gè)入口方法,,如果使用者在DLL被系統(tǒng)初始化或者注銷時(shí)被調(diào)用,用來(lái)寫(xiě)入對(duì)DLL的初始化程序和卸載程序,;參數(shù):hinst用來(lái)指示DLL的基地址;reason用來(lái)指示DLL的調(diào)用方式,,用于區(qū)別多線程單線程對(duì)DLL的調(diào)用,、創(chuàng)建、卸載DLL,;
  2.在程序中加入自己所要?jiǎng)?chuàng)建的DLL過(guò)程,、函數(shù);
  3.用dllimport描述出口,;
  例程序如下:
   #include
   #pragma hdrstop

  extern "C" __declspec(dllexport) int test();

  int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason,void *)
  {
   return 1;
  }

  int test()
  {
    return 3;
  }

  注意:動(dòng)態(tài)鏈接庫(kù)中調(diào)用過(guò)程、函數(shù)時(shí)有不同的CALL方式 __cdecl,、__pascal, __fastcall,、__stdcall,BCB中默認(rèn)的方式為_(kāi)_cdecl(可不寫(xiě)),,如果考慮兼容性可用時(shí)__stdcall聲明方法為:
  extern "C" __declspec(dllexport) int __stdcall test();
  對(duì)于其中過(guò)程,、函數(shù)也改為:
  int __stdcall test()

  二、使用DLL
  在BCB中使用DLL有兩種方法:

  1.用靜態(tài)調(diào)用法
  首先需要在BCB的項(xiàng)目中加入輸入接口庫(kù)(import library),,打開(kāi)工程項(xiàng)目,,使用BCB View|Project Manager打開(kāi)項(xiàng)目列表,向項(xiàng)目中加入接口庫(kù)(*.lib),。
  其次在頭文件中加入接口聲明,。
  例程序如下:
   //define in include file
   extern "C" __declspec(dllimport) int __cdecl test();
  //use function in main program
  int I;
  I=test();
  注意:
  (1)動(dòng)態(tài)鏈接庫(kù)調(diào)用過(guò)程、函數(shù)時(shí)CALL方式 與創(chuàng)建時(shí)方式一樣不寫(xiě)為_(kāi)_cdecl,,其它需要聲明,。
  (2)BCB創(chuàng)建的DLL有對(duì)應(yīng)的輸入接口庫(kù)(import library),如只有DLL而無(wú)庫(kù)時(shí),,可用BCB的implib工具產(chǎn)生:implib xxx.lib xxx.dll,;另外可用:tlibxxx.lib,xxx.lst 產(chǎn)生DLL的內(nèi)部函數(shù)列表,許多Windows的未公開(kāi)技術(shù)就是用這種方法發(fā)現(xiàn)的,。

  2.動(dòng)態(tài)調(diào)用法
  動(dòng)態(tài)調(diào)用法要用Windows API 中的LoadLibrary()和GetProcAddress()來(lái)調(diào)入DLL庫(kù),,指出庫(kù)中函數(shù)位置,這種方法較常見(jiàn),。
  例程序如下:

   HINSTANCE dd;
   int _stdcall (*ddd)(void);
   dd=LoadLibrary("xxx.dll");
   ddd=GetProcAddress(dd,"test");
   Caption=IntToStr(ddd());
  FreeLibrary(dd);

  三、注意:
  創(chuàng)建DLL時(shí)編譯鏈接時(shí)注意設(shè)置Project Options,。
  Packages標(biāo)簽:去除Builder with runtime packages檢查框,。
  Linker標(biāo)簽:去除Use dynamic RTL檢查框。
  否則創(chuàng)建的DLL需要Runtime packages or Runtime library,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多