六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

BCB客戶端tuxedo開發(fā)案例

[摘要]tuxedo 的函數(shù)很多,所有應(yīng)用都使用其中子集。這些函數(shù)子集包含在開發(fā)包中一定的動(dòng)態(tài)庫(kù)中。下面以tpinit,tpcall,tpterm,tpfree,tpalloc,Fget32,Fchg32,...
tuxedo 的函數(shù)很多,所有應(yīng)用都使用其中子集。這些函數(shù)子集包含在開發(fā)

包中一定的動(dòng)態(tài)庫(kù)中。下面以

tpinit,tpcall,tpterm,tpfree,tpalloc,Fget32,Fchg32,FLDOCC32 幾個(gè)函數(shù)為

例介紹一下在該子集下的編程方式。(不是很準(zhǔn)喲)

1、首先 找到這些函數(shù)所在的動(dòng)態(tài)庫(kù)。經(jīng)過(guò)解析發(fā)現(xiàn)以上函數(shù)包含         

    在"wtuxws32.dll","libfml32.dll" 兩個(gè)動(dòng)態(tài)庫(kù)中。多好,有了這兩個(gè)動(dòng)

   態(tài)庫(kù),應(yīng)用程序發(fā)行時(shí),帶上他們就可以了。再也不會(huì)出現(xiàn) 操作系統(tǒng)彈出

   的動(dòng)態(tài)庫(kù)定位錯(cuò)誤了。 且慢,后經(jīng)研究發(fā)現(xiàn),光有這兩個(gè)dll不行,他們

   的運(yùn)行還需如下6個(gè)dll:libbuft.dll,libengine.dll,libfml.dll,
  
   libgpnet.dll,libtux.dll,libwsc.dll。 哈哈。總算解析完了。

   好,把這些文件copy出來(lái)到自己的工程目錄下。多棒。趕緊進(jìn)入下一步。

2、配置編譯環(huán)境。這很重要。為使大家編程方便,我們做些小動(dòng)作。在

   BCB 的安裝目錄下(即$(BCB)標(biāo)識(shí)的目錄)建立tuxedo\目錄,將

   tuxedo開發(fā)包中的 \bin\,\include\,\lib\幾個(gè)目錄拷貝到該目錄下。
   
   然后,在Option Directories/Conditionals中設(shè)置
   
    Include Path :   $(BCB)\Tuxedo\include
    Library Path :   $(BCB)\Tuxedo\lib
    
    好了,環(huán)境設(shè)置好了。在你的工程中include :
    #include <atmi.h>
    #include <fml32.h>
    #include <tmenv.h>
    
    哦,他們?nèi)齻(gè)文件實(shí)在太重要了,不包含進(jìn)來(lái)你會(huì)后悔的:)
    
3、建立一個(gè)tuxedo子集函數(shù)結(jié)構(gòu)。為什么這樣做呢,直接使用tuxedo函數(shù)

   不好嗎? 這沒什么的,依個(gè)人編程環(huán)境而定。我習(xí)慣于在結(jié)構(gòu)名下
   
   使用這些 外來(lái)開發(fā)包中的函數(shù),因?yàn)槟銓?duì)他們不是很熟,有時(shí)會(huì)遺忘
   
   其名稱,將其放在結(jié)構(gòu)中,利用BCB自動(dòng)提示功能,你就可以很容易
   
   找到(想起)需要的函數(shù)了。我定義的結(jié)構(gòu)如下:
   
typedef
struct _FunTuxedo
{

  int
  (_TMDLLENTRY *
  tpcall)(char _TM_FAR *,
   char _TM_FAR *,
   long ,
   char _TM_FAR * _TM_FAR *,
   long _TM_FAR *,
   long );
   
  int
  (_TMDLLENTRY *
  tpinit)(TPINIT _TM_FAR *);
  
  int
  (_TMDLLENTRY *
  tpterm)(void);
  void
  (_TMDLLENTRY *
  tpfree)(char _TM_FAR *);
  
  char *
  (_TMDLLENTRY *
  tpalloc)(char _TM_FAR *,
      char _TM_FAR *,
      long);
  
  int
  (_TMDLLENTRY *
  Fget32)(FBFR32 _TM_FAR *,
     FLDID32,
     FLDOCC32,
     char _TM_FAR *,
     FLDLEN32 _TM_FAR *);
  
  
  int
  (_TMDLLENTRY *
  Fchg32)(FBFR32 _TM_FAR *,
     FLDID32,
     FLDOCC32,
     char _TM_FAR *,
     FLDLEN32);
  FLDOCC32
  (_TMDLLENTRY *
  Foccur32)( FBFR32 _TM_FAR *,
    FLDID32);
  
  HMODULE hLibfml32; // libfml32.dll 動(dòng)態(tài)庫(kù)句柄
  HMODULE hWtuxws32; // wtuxws32.dll 動(dòng)態(tài)庫(kù)句柄

}FUNTUXEDO,*PFUNTUXEDO;

    這里,我將兩個(gè)動(dòng)態(tài)庫(kù)句柄加入到了結(jié)構(gòu)中,是因?yàn)槲掖蛩銊?dòng)態(tài)使用
    
   tuxedo中間件。方便我釋放他們。,下一節(jié)介紹裝載/釋放他們
   
4 裝載、釋放中間件(基于FUNTUXEDO結(jié)構(gòu))

   哈,這很容易,主要用到LoadLibrary,FreeLibrary,GetProcAddress
   
   三個(gè)函數(shù)。裝載代碼如下:
   
    PFUNTUXEDO pFun;       

    //Loading Fchg32, Fget32 by LIBFML32.DLL
    pFun->hLibfml32 = LoadLibrary("libfml32.dll");
    if (pFun->hLibfml32 == NULL)
    {
     return -1;
    }
    
    (FARPROC &)pFun->Fchg32
     =(FARPROC)GetProcAddress(pFun->hLibfml32,"Fchg32");
    (FARPROC &)pFun->Fget32
     =(FARPROC)GetProcAddress(pFun->hLibfml32,"Fget32");
(FARPROC &)pFun->Foccur32
     =(FARPROC)GetProcAddress(pFun->hLibfml32,"Foccur32");        
            
    if (pFun->Fchg32 == NULL pFun->Fget32 == NULL pFun->Foccur32 == NULL)
    {
     FreeLibrary(pFun->hLibfml32);
        pFun->hLibfml32 = NULL;
     return -2;
    }
//Loading tpacall, tpalloc, tpfree, tpinit, tpterm by WTUXWS32.DLL
pFun->hWtuxws32 = LoadLibrary("wtuxws32.dll");
    if (pFun->hWtuxws32 == NULL)
    {
     FreeLibrary(pFun->hLibfml32);
        pFun->hLibfml32 = NULL;        
     return -3;
    }    
        
    (FARPROC &)pFun->tpcall
     =(FARPROC)GetProcAddress(pFun->hWtuxws32,"tpacall");                                  
    (FARPROC &)pFun->tpalloc
     =(FARPROC)GetProcAddress(pFun->hWtuxws32,"tpalloc");
    (FARPROC &)pFun->tpfree
     =(FARPROC)GetProcAddress(pFun->hWtuxws32,"tpfree");
    (FARPROC &)pFun->tpinit
     =(FARPROC)GetProcAddress(pFun->hWtuxws32,"tpinit");
    (FARPROC &)pFun->tpterm
     =(FARPROC)GetProcAddress(pFun->hWtuxws32,"tpterm");         
                        
    if (pFun->tpcall == NULL pFun->tpalloc == NULL
     pFun->tpfree == NULL pFun->tpinit  == NULL
        pFun->tpterm == NULL)
    {
     FreeLibrary(pFun->hLibfml32);
        pFun->hLibfml32 = NULL;        
        FreeLibrary(pFun->hWtuxws32);
pFun->hWtuxws32 = NULL;
        return -4;
    }    
   
   釋放時(shí)很簡(jiǎn)單,只需
        FreeLibrary(pFun->hLibfml32);          
        FreeLibrary(pFun->hWtuxws32);
   即可。
   
5、使用。例:...的內(nèi)容查幫助吧。

    PFUNTUXEDO pFun;    
    char *pSendBuff;
    char *pRecvBuff;
    long lRet;
    short sRet;
    int iRet;     
    
    
    //中間件服務(wù)
    
    pSendBuff = pFun->tpalloc(...);
    if (pSendBuff == NULL)
    {
     return ERR_TUXEDO;
    }
    
    pRecvBuff = pFun->tpalloc(...);
    if (pRecvBuff == NULL)
    {
     pFun->tpfree(pSendBuff);
        return ERR_TUXEDO;
    }
    
    try
    {    
    iRet = pFun->Fchg32(...);
    if (iRet == -1)
    {
     throw(1);
    }                    
    
    //建立連接
    iRet = pFun->tpinit(NULL);
    if (iRet == -1)
    {
     throw(2);
    }                       
     
    iRet = pFun->tpcall(...);
    if (iRet == -1)
    {
     throw(3);
    }      
    
    iRet = pFun->tpterm();
    if (iRet == -1)
    {
     throw(4);       
    }
    iRet =pFun->Fget32(...);
    if (iRet == -1)
    {
     throw(4);       
    }                          
    
    pFun->tpfree(pSendBuff);
    pFun->tpfree(pRecvBuff);
    
    }
    catch(int Err)
    {                    
     pFun->tpfree(pSendBuff);
  pFun->tpfree(pRecvBuff);
        return Err;
    }
    catch(...)
    {
     return ERR_UNKNOWN;
    }    

    //這里可以處理接收到的數(shù)據(jù)結(jié)果
    //...  
      
6、編譯。 


主站蜘蛛池模板: 日本中文字幕在线视频站 | 亚洲成在线观看 | 日本高清色视频www 日本高清色本在线www游戏 | 午夜国产在线观看 | 天天干夜夜添 | 五月婷婷之婷婷 | 日本高清色www | 日韩一级二级三级 | 日本精品久久久久护士 | 自拍偷拍欧美亚洲 | 色噜噜噜噜噜噜 | 日韩a级片视频 | 日韩专区亚洲综合久久 | 情侣视频精品免费的国产 | 日本国产欧美色综合 | 欧美视频第一页 | 天堂在线最新资源 | 午夜欧美精品久久久久久久久 | 欧美特级视频 | 三级免费黄色片 | 网站免费观看 | 日本高清黄色网站 | 日本片免费观看一区二区 | 夜夜嗨视频 | 四虎影院在线免费观看 | 亚洲 欧美 日韩 在线 中文字幕 | 亚洲人成影网站~色 | 最新国产中文字幕 | 最新国产在线 | 天天爽天天狼久久久综合 | 亚洲se主站| 五月婷婷影院 | 青青青在线网站视频在线 | 视频在线观看免费视频 | 日韩影视在线观看 | 五月婷婷久 | 性刺激性色爽爱小说 | 欧洲在线 | 亚洲伊人久久大香线焦 | 欧美午夜视频在线 | 四虎在线永久精品高清 |