[前][次][番号順一覧][スレッド一覧]

mysql:3507

From: Kengo Jinno <Kengo Jinno <kengo@xxxxxxxxxx>>
Date: Fri, 06 Apr 2001 20:08:46 +0900
Subject: [mysql 03507] Re: 日本語版での開発について

神野です。

Fri, 6 Apr 2001 19:31:12 +0900 ごろに
<000801c0be84$b3f34900$2501a8c0@jshome> の
"[mysql 03506] Re: 日本語版での開発について" のメールで
"hirofujita8523" <hirofujita8523@xxxxxxxxxx> さんは書きました。

> しかし Borland 5.01 の implib には、オプション -a がないのです。
> 私の知識では Borland 5.01 のみで -a を使わずにコンパイルする方法がわかりませ
> んでした。

残念ながら、5.01は持ってないので・・・

> 何らか Borland 5.01 だけでコンパイルする方法を教えていただけないでしょうか?

まったく別の方法として、「明示的リンクを使う」というのがあります。

LoadLibrary( "libmysql.dll" ); して、
GetProcAddress( "mysql_num_fields"); して、
その関数ポインタを使って関数を呼び出す方法です。

といっても、libmysql.dllのすべての関数でそうしていたら
とてもめんどくさいので、STDCALLでない関数だけでやれば
どうでしょう?

こんな感じ↓です。(テストしてません)

typedef unsigned int    (* LP_FUNC_MYSQLNUMFIELDS)( MYSQL_RES * );

int     main( int ac, char* av[] )
{
    HINSTANCE   hDll;
    LP_FUNC_MYSQLNUMFIELDS  lpfnMysqlNumFields;
    
    hDll = LoadLibrary( "libmysql.dll" );
    lpfnMysqlNumFields = (LP_FUNC_MYSQLNUMFIELDS)GetProcAddress( hDll, "mysql_num_fields" );
    
    ...
    MYSQL_RES *res = mysql_store_result(p);
    printf("%d", (*lpfnMysqlNumFields)(res));
    mysql_free_result(res);
    ...
    
    FreeLibrary( hDll );
    return 0;
}

C++を使ってよいのなら、こうした手続きをラップするクラスを作って、
それ経由でアクセスすれば楽かもしれません。

#とかやっても、将来のwinclientsでは、全部STDCALLになるかも
#しれません。(つーか、2種類あるのが美しくない)

-- 
神野健吾 <kengo@xxxxxxxxxx>

[前][次][番号順一覧][スレッド一覧]

      3496 2001-04-06 11:04 ["hirofujita8523" <hi] 日本語版での開発について                
      3497 2001-04-06 13:13 ┗[Kengo Jinno <kengo@x]                                       
      3506 2001-04-06 19:31  ┗["hirofujita8523" <hi]                                     
->    3507 2001-04-06 20:08   ┗[Kengo Jinno <kengo@x]                                   
      3509 2001-04-07 06:15    ┗["hirofujita8523" <hi]