![見出し画像](https://assets.st-note.com/production/uploads/images/73312657/rectangle_large_type_2_b1e837059fcafc1fa70f850c00ecb77c.jpeg?width=1200)
[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を開き、右下の『コードなしで続行』を選びます。
![](https://assets.st-note.com/img/1646121380850-LJ4Av4rL8R.png?width=1200)
メニュー-[ファイル]-[新規作成]-[既存のコードからプロジェクトを作成]を選びます。
![](https://assets.st-note.com/img/1646121438472-9X4lhUTw8U.png?width=1200)
ウィザード画面が開きます。作成するプロジェクトの種類から『Visual C++』を選び、次へ進みます。
![](https://assets.st-note.com/img/1646121465692-3PUoWhqtrA.png?width=1200)
プロジェクトファイルの場所に、C API Toolkitのsamples/admin/trackerディレクトリを入力し、プロジェクト名は先頭にnを付けて『ntracker』と入力し、次へ進みます。
![](https://assets.st-note.com/img/1646121546112-ZhBxhSX2sU.png?width=1200)
プロジェクトのビルド方法で、Visual Studioを使用するを選びます。プロジェクトの種類は『ダイナミックリンクライブラリ(DLL)プロジェクト』を選び、次へ進みます。
![](https://assets.st-note.com/img/1646121599391-rbAbebKnkx.png?width=1200)
デバッグ構成と、リリースの構成の設定は、空欄のまま次へ進み、プロジェクトの作成を完了します。
プロジェクトのプロパティを設定
構成にはリリースとデバッグがあり、プラットフォームには32ビットと64ビットがあります。この組み合わせの数だけ設定があるため、まとめられるものはまとめて設定しましょう。
最初にソリューションエクスプローラーでプロジェクト名を選びます(つまづきやすいところです)。何も選ばないとソリューション名が選ばれたままになり、設定項目が大幅に異なります。
![](https://assets.st-note.com/img/1646122324163-cOz5AHHlOd.png?width=1200)
次に、メニューから[プロジェクト]-[プロパティ]を選びます。
すべての構成・すべてのプラットフォーム
画面上部の構成を『すべての構成』へ、プラットフォームを『すべてのプラットフォーム』にします。
次に[構成プロパティ]-[全般]-[構成の種類]で『ダイナミックライブラリ (.dll)』を選びます。
![](https://assets.st-note.com/img/1646122292133-grsA4Du2Ul.png?width=1200)
[構成プロパティ]-[C/C++]-[全般](または[すべてのオプション])-[追加のインクルードディレクトリ]にC API Toolkitのincludeディレクトリを追加します。
最初なので詳しく説明します。右側の下向き▼を選択します。
![](https://assets.st-note.com/img/1646183395814-O129zrF3VS.png?width=1200)
[<編集…>]を選びます。
![](https://assets.st-note.com/img/1646183483634-SVfULvcbLq.png?width=1200)
一番上の空欄を選びます。
![](https://assets.st-note.com/img/1646183537315-ucBjmxoUmG.png?width=1200)
C API Toolkitのincludeディレクトリを入力または貼り付けます。
![](https://assets.st-note.com/img/1646183574660-tN5I4RrslE.png?width=1200)
Enterキーを押すと[評価された値]欄に転記されます。
OKボタンを押して戻ります。
![](https://assets.st-note.com/img/1646183686698-VtIrOzM86H.png?width=1200)
[追加のインクルードディレクトリ]にC API Toolkitのincludeディレクトリが入りました。
![](https://assets.st-note.com/img/1646183781980-3zPVNd8qri.png?width=1200)
[構成プロパティ]-[リンカー]-[入力](または[すべてのオプション])-[追加の依存ファイル]へ、今回は『notes.lib』を追加します。
![](https://assets.st-note.com/img/1646184012560-HFnCYUKqFB.png?width=1200)
追加する依存ファイルは次のように調べます。C API Toolkitのsamples/admin/trackerディレクトリにある『mswin32.mak』ファイルをメモ帳で開きます。[user32.lib]の前に『notes.lib』だけがありますね、今回は『notes.lib』だけを追加します。
![](https://assets.st-note.com/img/1646184459581-9wJwjhZrD1.png?width=1200)
すべての構成・Win32
画面上部の構成を『すべての構成』へ、プラットフォームを『Win32』へ変更します。
[構成プロパティ[-[リンカー]-[全般](または[すべてのオプション])-[追加のライブラリディレクトリ]にC API Toolkitのlib\mswin32ディレクトリを追加します。
![](https://assets.st-note.com/img/1646184991234-HeWUMpkKIW.png?width=1200)
[構成プロパティ]-[C/C++]-[コマンドライン]-[追加のオプション]に『-DW32』を入力します。
![](https://assets.st-note.com/img/1646980734349-fETMbxfaGR.png?width=1200)
画面下部の『OK』を押してプロパティページを閉じます。
ソリューションのビルド
画面上部を『Debug』『x86』にします。
![](https://assets.st-note.com/img/1646185795490-MXFBr9IHZ8.png?width=1200)
メニューからビルド-『ソリューションのビルド』を選びます。
![](https://assets.st-note.com/img/1646186020102-jc3yTjlj8j.png?width=1200)
『ビルド: 1 正常終了』となったらOKです。
![](https://assets.st-note.com/img/1646186294470-OriIWVTVl2.png?width=1200)
画面上部を『Release』『x86』に変更して、同様にソリューションをビルドします。これも『ビルド: 1 正常終了』となったらOKです。
動かしてみる
今ビルドしたntracker.dllをドミノサーバーのプログラムディレクトリに置きましょう。
C API Toolkitのnotedataディレクトリにあるtracker.nsfとtrashcan.nsfはドミノサーバーのデータディレクトリに置きます。
通常はドミノサーバーのプログラムディレクトリにあるnotes.iniを更新するためにドミノサーバーを止めます。notes.iniに次の3行を追記します。
NSF_HOOKS=TRACKER
TRACKER_TARGET=TRACKER
TRACKER_TRASHCAN=TRASHCAN
さいごに
64ビットのサーバーには64ビットのDLLが必要ですが、実験としてドミノサーバーを動かしてみましょう。
あれ?サーバーは異常終了しません…。64ビットのサーバーに32ビットのDLLを合わせると無視されるようです。
いいなと思ったら応援しよう!
![カミュプリィ(ノーツドミノの維持管理と開発)](https://assets.st-note.com/production/uploads/images/59971559/profile_c377a8e11603802d2c759f8b7093f799.jpg?width=600&crop=1:1,smart)