VMime Book 日本語訳 第3章 2020-07-01 K.OHWADA
原文
VMime Book: A Developer’s Guide To VMime
https://www.vmime.org/public/documentation/book/vmime-book.pdf
第3章 入門 (GettingStarted)
ページ内 目次
3.1 プログラムでのVMimeの使用
3.2 pkg-config を使用できない(または使用したくない)場合
3.3 プラットフォームに依存するコード
3.1プログラムでのVMimeの使用
UsingVMimeinyourprograms
まず、1.3章で説明されている手順を使用して、VMimeを正常にコンパイルおよびインストールしたことを確認します。
プログラムでVMimeを使用するには、VMimeヘッダーを含める必要があります。
#include <vmime/vmime.hpp>
注:
0.6.1より古いバージョンの場合は、
バージョン0.6.1以降、VMimeはpkg-configを使用して、VMimeとのコンパイルとリンクを簡素化します。
pkg-configユーティリティは、ライブラリに必要な適切なコンパイラとリンカのフラグを検出するために使用されます。
次の方法でプログラムを簡単に作成できます。
静的バージョン (static version) を使用するには、または次のコマンドを使用します。
$ g++ ‘pkg-config --cflags --libs vmime‘ -static -o myprog myprog.cpp
共有バージョン(shared version) を使用します。
$ g++ ‘pkg-config --cflags vmime‘ -o myprog myprog.cpp ‘pkg-config --libs vmim
注:
ライブラリの共有バージョンに対してプログラムをリンクすることを強くお勧めします。
すべてのVMimeクラスとグローバル関数は名前空間vmimeで定義されているため、vmime ::でVMimeを使用するすべての宣言にプレフィックスを付けるか、C ++キーワークを使用してvmime名前空間をグローバル名前空間にインポートします(ただし、推奨されません)。
3.2 pkg-configを使用できない(または使用したくない)場合
Ifyoucannot(ordonotwantto)usepkgconfig
共有ライブラリ(.so)とのリンク:-lvmimeフラグを使用してプログラムをコンパイルします。
ライブラリファイルが標準パスにない場合(つまり、/ usr / libまたは/ usr / local / libにない場合)、-Lパスフラグを使用できます。
注:
プログラムをVMimeライブラリの共有バージョンにリンクする場合は、ライブラリがCMakeビルドシステムを使用してコンパイルされていることを確認してください(make、次にmake install)。
SCons を使用してコンパイルすると、静的ライブラリのみがビルドおよびインストールされます。
静的ライブラリ(.a)とのリンク:
共有リンクの場合と同じ手順に従い、フラグ-staticを追加して静的リンクを強制します。
静的リンクは可能ですが、ライブラリの共有(動的)バージョンを使用することをお勧めします。
3.3 プラットフォームに依存するコード
Platform-dependentcode
VMimeコードの大部分は純粋なANSIC ++ですが、プラットフォーム固有の機能がいくつかあります。
ファイル管理(ファイルのオープン/読み取り/書き込み)、ネットワークコード(ソケット、DNS解決)、時間管理です。
移植性のないものはすべて、プラットフォームハンドラーと呼ばれるブリッジオブジェクトによって実行されます(vmime :: platformを参照)。
プラットフォームがPOSIX互換(GNU / Linux、* BSDなど)またはWindowsの場合、幸運です。
VMimeにはこれらのプラットフォームのサポートが組み込まれています。
そうでない場合でも、心配しないでください。
組み込みのプラットフォームハンドラーのソースは十分に文書化されているため、独自に作成することはそれほど難しくありません。
VMimeのバージョンが<= 0.9.1の場合は、プログラムの開始時に(VMimeオブジェクトを使用する前、またはVMimeグローバル関数を呼び出す前に)使用するプラットフォームハンドラーをVMimeに通知する必要があります。
したがって、プラットフォームがPOSIXの場合、プログラムは次のようになります。
リスト3.1:VMimeとプラットフォームハンドラーの初期化
Initializing VMime and the platform handler
#include <vmime/vmime.hpp> #include <vmime/platforms/posix/posixHandler.hpp> int main() { vmime: : platform : : setHandler <vmime: : platforms : : posix : : posixHandler>(); // Now, you can use VMime // ...do what you want, it ’s your program... } ```` WindowsでVMimeを使用するには、vmime / platform / windows / windowsHandler.hppをインクルードし、次の行を使用してプラットフォームハンドラーを初期化します。
vmime: : platform : : setHandler <vmime::platforms::windows::windowsHandler>();
注: バージョン0.9.2以降、これは不要になりました。 プラットフォームハンドラーは、ビルド構成中に検出されたプラットフォームを使用して自動的にインストールされます。 注: バージョン0.8.1以降、vmime :: platformDependantはvmime :: platformに名前が変更されました。 互換性のために古い名前は保持されていますが、必要に応じてコードを更新することをお勧めします。