見出し画像

[C API Toolkit] Visual Studio 2020でサンプルをビルドしてみた(32ビット)

はじめに

 HCL C API Toolkit for Notes/Domino 12.0のsamples/admin/trackerディレクトリにあるサンプルを、Microsoft Visual Studio 2020でビルドしてみます。
 trackerはDominoサーバーのnotes.iniのNSF_HOOKS=行にDLLファイル名を追加します。ノーツの文書が開かれたり更新されたりするときにDLLが呼び出されます。
 今のWindowsサーバーは64bitが多いとおもいますが、サンプルは32bitです。とりあえず32bitのままビルドしてみましょう。

Visual Studioでプロジェクトを作成

 Visual Studioを開き、右下の『コードなしで続行』を選びます。

 メニュー-[ファイル]-[新規作成]-[既存のコードからプロジェクトを作成]を選びます。

 ウィザード画面が開きます。作成するプロジェクトの種類から『Visual C++』を選び、次へ進みます。

 プロジェクトファイルの場所に、C API Toolkitのsamples/admin/trackerディレクトリを入力し、プロジェクト名は先頭にnを付けて『ntracker』と入力し、次へ進みます。

 プロジェクトのビルド方法で、Visual Studioを使用するを選びます。プロジェクトの種類は『ダイナミックリンクライブラリ(DLL)プロジェクト』を選び、次へ進みます。

 デバッグ構成と、リリースの構成の設定は、空欄のまま次へ進み、プロジェクトの作成を完了します。

プロジェクトのプロパティを設定

 構成にはリリースとデバッグがあり、プラットフォームには32ビットと64ビットがあります。この組み合わせの数だけ設定があるため、まとめられるものはまとめて設定しましょう。

 最初にソリューションエクスプローラーでプロジェクト名を選びます(つまづきやすいところです)。何も選ばないとソリューション名が選ばれたままになり、設定項目が大幅に異なります。

 次に、メニューから[プロジェクト]-[プロパティ]を選びます。

すべての構成・すべてのプラットフォーム

 画面上部の構成を『すべての構成』へ、プラットフォームを『すべてのプラットフォーム』にします。
 次に[構成プロパティ]-[全般]-[構成の種類]で『ダイナミックライブラリ (.dll)』を選びます。

 [構成プロパティ]-[C/C++]-[全般](または[すべてのオプション])-[追加のインクルードディレクトリ]にC API Toolkitのincludeディレクトリを追加します。
 最初なので詳しく説明します。右側の下向き▼を選択します。

 [<編集…>]を選びます。

 一番上の空欄を選びます。

 C API Toolkitのincludeディレクトリを入力または貼り付けます。

 Enterキーを押すと[評価された値]欄に転記されます。
 OKボタンを押して戻ります。

 [追加のインクルードディレクトリ]にC API Toolkitのincludeディレクトリが入りました。

 [構成プロパティ]-[リンカー]-[入力](または[すべてのオプション])-[追加の依存ファイル]へ、今回は『notes.lib』を追加します。

 追加する依存ファイルは次のように調べます。C API Toolkitのsamples/admin/trackerディレクトリにある『mswin32.mak』ファイルをメモ帳で開きます。[user32.lib]の前に『notes.lib』だけがありますね、今回は『notes.lib』だけを追加します。

すべての構成・Win32

 画面上部の構成を『すべての構成』へ、プラットフォームを『Win32』へ変更します。

 [構成プロパティ[-[リンカー]-[全般](または[すべてのオプション])-[追加のライブラリディレクトリ]にC API Toolkitのlib\mswin32ディレクトリを追加します。

 [構成プロパティ]-[C/C++]-[コマンドライン]-[追加のオプション]に『-DW32』を入力します。

 画面下部の『OK』を押してプロパティページを閉じます。

ソリューションのビルド

 画面上部を『Debug』『x86』にします。

 メニューからビルド-『ソリューションのビルド』を選びます。

 『ビルド: 1 正常終了』となったらOKです。

 画面上部を『Release』『x86』に変更して、同様にソリューションをビルドします。これも『ビルド: 1 正常終了』となったらOKです。

動かしてみる

 今ビルドしたntracker.dllをドミノサーバーのプログラムディレクトリに置きましょう。
 C API Toolkitのnotedataディレクトリにあるtracker.nsftrashcan.nsfはドミノサーバーのデータディレクトリに置きます。
 通常はドミノサーバーのプログラムディレクトリにあるnotes.iniを更新するためにドミノサーバーを止めます。notes.iniに次の3行を追記します。

NSF_HOOKS=TRACKER
TRACKER_TARGET=TRACKER
TRACKER_TRASHCAN=TRASHCAN

さいごに

 64ビットのサーバーには64ビットのDLLが必要ですが、実験としてドミノサーバーを動かしてみましょう。
あれ?サーバーは異常終了しません…。64ビットのサーバーに32ビットのDLLを合わせると無視されるようです。

サポートいただければ、記事をもっと充実することができます