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

明輝手游網(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、編譯。 


主站蜘蛛池模板: 天天干天天色天天 | 欧美野外性xxxxfeexxxx | 日韩推理片在线免费看网站 | 日韩欧美精品综合久久 | 午夜视频在线免费播放 | 日本午夜在线视频 | 天天做天天爰夜夜爽 | 亚洲精品一级毛片 | 日本一二三区在线视频 | 五月婷婷视频在线观看 | 亚洲国产精品久久久久666 | 亚洲一区有码 | 四虎在线视频免费观看 | 亚洲一区二区在线播放 | 午夜免费视频观看在线播放 | 一级做性色a爰片久久毛片免费 | 青娱乐在线视频免费观看 | 亚洲四虎| 午夜视频日本 | 香蕉香蕉国产片一级一级毛片 | 天堂在线最新版www中文 | 欧美性黄色 | 在线观看亚洲欧美 | 最近最新中文字幕在线第一页 | 五月婷婷导航 | 欧美视频在线观看网站 | 四虎影视库 | 三级经典三级日本三级欧美 | 四虎4hu永久免费国产精品 | 午夜成年免费观看视频 | 污污视频在线播放 | 青娱乐在线视频盛宴 | 午夜影院在线免费 | 四虎精品永久在线 | 自拍偷拍1 | 日韩亚洲综合精品国产 | 日本剧情片大全免费的视频 | 影音先锋色先锋 | 日韩精品中文字幕一区三区 | 天天操天天操天天 | 日韩中文一区 |