Visual Studio 2010以降でランタイム同梱無しにATSプラグイン作成

 Bve trainsim(BVE)の公式サイトで頒布されている「atsplugin.h」は、ATSプラグインのインターフェイスを司り、ATSプラグインの作成に不可欠なヘッダファイルです。

 ところが、このヘッダファイルをそのまま使用して作成したATSプラグインをVisual Studio 2010以降でコンパイルしようとしたとき、プロジェクトのプロパティ中の「構成プロパティ > C/C++ > コード生成 > ランタイム ライブラリ」を「マルチスレッド DLL」「マルチスレッド デバッグ DLL」と設定しておかないとコンパイルが通らなくなります。

 この設定ではコンパイル結果のATSプラグインのファイルサイズは小さくなる一方、プレイヤー側に特定バージョンのVisual C++ ランタイムのインストール作業という負担が生じてしまいます。プレイヤー側へのランタイムのインストールを不要にするためには「マルチスレッド」「マルチスレッド デバッグ」と設定する必要がありますが、その設定でコンパイルが通るようにするためにはatsplugin.hの冒頭を以下のように変更する必要があります。

変更箇所

#ifdef ATS_EXPORTS
#define ATS_API __declspec(dllexport)
#else
#define ATS_API __declspec(dllimport)
#endif

変更後

#ifdef ATS_EXPORTS
#ifdef __cplusplus
#define ATS_API extern "C" __declspec(dllexport)
#else
#define ATS_API extern __declspec(dllexport)
#endif
#else
#ifdef __cplusplus
#define ATS_API extern "C" __declspec(dllimport)
#else
#define ATS_API extern __declspec(dllimport)
#endif
#endif