Adobe FrameMaker8 FDK 最初の一歩
FDKは、 CやVisualStudioの操作に慣れていないと、なかなか敷居が高い。 以下は、FDKのとっかかりのメモ。
はじめにすること
- FDK8_windows.exe をAdobeサイトからダウンロード
- FDK8_windows.exe をインストール
- インストールされたFDK8のディレクトリ内の doc/ samples/ あたりを眺める
具体的に第一歩を踏み出す
VisualStudio2003 以降を用意する。 (わたしの場合手元にVisualStudio2005があったのでそれを使った、特に問題は無さそう。)
VisualC++ 6.0 でもビルドできる風の記述がドキュメントにはあるのだが、 うまくいかなかった。C/C++初心者は素直に、VisualStudio2003 以降を使うべし。
doc/fdkguide.pdf のはじめに載っているサンプル(Page9, A simple example) をまずコンパイルして、DLLを作成し、FMで動かすところまでやってみる。
ビルド成功させるまで
- doc/fdkguide.pdf の Page9, A simple example を入力、sample.c ファイルに保存。
- VisualStudio2005を起動し、プロジェクトを作成
- プロジェクトウィザードで、Win32 プロジェクトを選択する
- プロジェクトフォルダに、1.で入力しておいたコード、sample.c を配置
- 【プロジェクト - すべてのファイルの表示】にて sample.c を表示させ、sample.c を右クリックして「プロジェクトへ含める」メニューを選択
- この段階で試しにビルドしてみる→(メニュー【ビルド-ソリューションのビルド】)
- エラーになりビルドできない
エラーの解消方法
doc/winguide.pdf Page.24 Compiling and registering your own FDK clients に 書いてある通りに設定してからビルドし直せばOK.
- メニュー【プロジェクト-プロパティ】
- 構成プロパティ - C/C++ - 全般
- 追加のインクルードディレクトリ→ C:\Program Files\Adobe\FDK8\include を指定
- 構成プロパティ - リンカ - 全般
- 追加のライブラリディレクトリ→ C:\Program Files\Adobe\FDK8\lib を指定
- 構成プロパティ - リンカ - 入力
- 追加の依存ファイル→fdk.lib api.lib fmdbms32.lib を指定
- 最後に適用ボタンをクリックし、OKボタンでプロパティページダイアログを閉じる
以上設定後、再度ビルドしてみる→(メニュー【ビルド-ソリューションのビルド】) と問題なくビルドされる。
警告が出る 「defaultlib "LIBC" conflicts with use of other libs;」
これは、プロジェクトの構成プロパティ - C/C++ - コード生成 で ランタイムライブラリ項目でマルチスレッドを選択している場合に出る。
Adobeの説明(winguide.pdf) では、シングルスレッドを選択せよ、と書かれているが、 MSによれば、VisualStudio2005 以降では、シングルスレッドは選択できないとのこと。
- http://support.microsoft.com/kb/126646/ja シングルスレッド CRT は Visual Studio 2005 とそれ以降のバージョンにもう使用できません。
作成したクライアントをFMに登録して実行する
作成したFMクライアントを foo.dll とすると以下のように設定。
- C:\Program Files\Adobe\FrameMaker8\fminit\foo.dll に作成したFMクライアントを配置
- C:\Program Files\Adobe\FrameMaker8\maker.ini の [APIClients] 直下に以下の記述を追加
maker.ini
[APIClients]
myapi = Standard,Ch. 1 Sample,fminit\foo.dll,all
あとは、FrameMaker8 を起動して、意図通り作動するか確認します。