旧C++Builder FAQ - ライブラリ

Abstract: この FAQは、旧 www.borland.co.jpに掲載されていた記事を転載したものです。記事は掲載時点の情報をあるがままに掲載しており、新バージョンでのご利用においては、コンポーネントや APIの仕様変更等によりご利用いただけない場合がありますのでご留意ください。

    Dynamic RTL を使ったプログラムに必要な DLL ファイルは?

該当するバージョン:C++Builder 3

Q:

オプション(O)|プロジェクト(P)|リンカ で Use Dynamic RTL をチェックして生成したアプリケーションの実行時に必要なファイルはどれですか?

A:

CP3230MT.DLL が必要になります。また、DLL で AnsiString 型を戻り値とする場合、及びその .DLL を使用するプログラムでは BCBMM.LIB をリンクしなければならず、BCBMM.DLL が必要になります。いずれも CBuilder\Bin ディレクトリに存在します。

    OWL や MFC を使用したプロジェクトで必要となるライブラリは? (99/01/08)

該当するバージョン:C++Builder 3

Q:

OWL や MFC を使用したプロジェクトで必要となるライブラリは?

A:

対応するライブラリは以下のとおりです。

ランタイムライブラリ(VCLを使用していない)

  • RTL スタティック cw32.lib
  • RTL ダイナミック cw32i.lib
  • RTL マルチスレッドスタティック cw32mt.lib
  • RTL マルチスレッドダイナミック cw32mti.lib

ランタイムライブラリ(VCLを使用している)

  • RTL スタティック cp32mt.lib
  • RTL ダイナミック cp32mti.lib
  • RTL マルチスレッドスタティック cp32mt.lib
  • RTL マルチスレッドダイナミック cp32mti.lib

OWL

  • OWL スタティック owlwv.lib
  • OWL ダイナミック owlwvi.lib
  • OWL マルチスレッドスタティック owlwv.lib
  • OWL マルチスレッドダイナミック owlwvi.lib
  • OWL 診断機能付きスタティック owldwv.lib
  • OWL 診断機能付きダイナミック owldwvi.lib
  • OWL 診断機能付きマルチスレッドスタティック owldwv.lib
  • OWL 診断機能付きマルチスレッドダイナミック owldwvi.lib

BIDS

  • BIDSスタティック bidsv.lib
  • BIDS ダイナミック bidsvi.lib
  • BIDS マルチスレッドスタティック bidsv.lib
  • BIDS マルチスレッドダイナミック bidsvi.lib
  • BIDS 診断機能付きスタティック bidsdv.lib
  • BIDS 診断機能付きダイナミック bidsdvi.lib
  • BIDS 診断機能付きマルチスレッドスタティック bidsdv.lib
  • BIDS 診断機能付きマルチスレッドダイナミック bidsdvi.lib

MFC

  • MFC スタティック nafxcw.lib
  • MFC 診断機能付きスタティック nafxcwd.lib
  • MFC DLL 使用時のスタティック部分 bfcs42.lib
  • MFC DLL 使用時の診断機能付きスタティック部分 bfcs42d.lib
  • MFC ダイナミック bfc42.lib
  • MFC 診断機能付きダイナミック bfc42d.lib
  • MFC 診断機能付きダイナミックOLE DLL bfco42d.lib
  • MFC 診断機能付きダイナミックデータベース DLL bfcd42d.lib
  • MFC 診断機能付きダイナミックインターネット DLL bfcn42d.lib

    HUGE_VAL がリンクエラーになります (99/01/08)

該当するバージョン:C++Builder 3

Q:

HUGE_VAL がリンクエラーになってしまいます。

A:

math.h を修正して下さい。

math.h の 129-131 行目の

   #ifdef __cplusplus
   extern "C" {
   #endif

を 124 行目の上に移動して下さい。

修正前

(途中省略)

   #define HUGE_VAL    _huge_dble
   extern double _RTLENTRY _EXPDATA _huge_dble;
   #define _LHUGE_VAL   _huge_ldble
   extern long double _RTLENTRY _EXPDATA _huge_ldble;
      
   #ifdef __cplusplus
   extern "C" {
   #endif

(以下省略)

修正後

(途中省略)

   #ifdef __cplusplus
   extern "C" {
   #endif
      
   #define HUGE_VAL    _huge_dble
   extern double _RTLENTRY _EXPDATA _huge_dble;
   #define _LHUGE_VAL   _huge_ldble
   extern long double _RTLENTRY _EXPDATA _huge_ldble;

(以下省略)

    VCLと MFCのクラスを混合で使用したい(98/12/2)

該当するバージョン:C++Builder 3

Q:

VCL と MFC のクラスを混合で使用したい

A:

基本的には可能です。以下の手順にそって実装して下さい。

  1. [ファイル|アプリケーションの新規作成] で新規アプリケーションを作成して下さい。
  2. [プロジェクト|オプション|ディレクトリ/条件]でインクルードパスに $(BCB)\include\mfcを追加して下さい。
  3. [プロジェクト|プロジェクトに追加]で \CBuilder3\lib\Nafxcw.libを追加して下さい。

後は MFC のクラスを実装してメイクして頂ければ実行可能です。

#include <afx.h>
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//-----------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//-----------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//-----------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  char fname[]="out.dat";
  char wstr[]="書き込み";

  CFile  wf( fname, CFile::modeCreate | CFile::modeWrite | CFile::typeText );
  wf.Write( wstr, sizeof(wstr));
  wf.Close();

}

但し例外処理に互換性がありませんので注意が必要です。