Oracle® Solaris Studio 12.4: C++ ユーザーズガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

14.7 C API を持つライブラリの構築

C++ で作成されたライブラリを C プログラムから使用できるようにするには、C API (アプリケーションプログラミングインタフェース) を作成する必要があります。そのためには、エクスポートされるすべての関数を extern "C" にします。ただし、これができるのは大域関数だけで、メンバー関数にはできません。

C インタフェースライブラリで C++ の実行時サポートを必要とし、しかも cc とリンクしている場合は、C インタフェースライブラリを使用するときにアプリケーションも libCrun (標準モード) にリンクする必要があります。(C インタフェースライブラリで C++ 実行時サポートが不要の場合は、libCrun とリンクする必要はありません。)リンク手順は、アーカイブされたライブラリと共有ライブラリでは異なります。

アーカイブされた C インタフェースライブラリを提供するときは、ライブラリの使用方法を説明する必要があります。

  • C インタフェースライブラリが CC を標準モード (デフォルト) で構築している場合は、C インタフェースライブラリを使用するときに -lCruncc コマンド行に追加します。

  • C インタフェースライブラリが CC互換モード (-compat=4) で構築している場合は、C インタフェースライブラリを使用するときに -lCcc コマンド行に追加します。

共有 C インタフェースライブラリを提供するときは、ライブラリの構築時に libCrun と依存関係を作る必要があります。共有ライブラリの依存関係が正しければ、ライブラリを使用するときに -lCrun をコマンドに追加する必要はありません。

  • C インタフェースライブラリをデフォルトの標準モードで構築している場合は、ライブラリの構築時に -lCrunCC コマンドに追加します。

さらに、C++ 実行時ライブラリにもまったく依存しないようにするには、ライブラリソースに対して次のコーディング規則を適用する必要があります。

  • どのような形式の new もしくは delete も使用しない (独自の new または delete を定義する場合は除く)

  • 例外を使用しない

  • 実行時の型識別機構 (RunTime Type Information、RTTI) を使用しない