大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

C++/Tclを使ってみた。

著者:高木信尚
公開日:2019/07/05
最終更新日:2019/07/05
カテゴリー:技術情報
タグ:

高木です。おはようございます。

最近、北本がTcl/TkとCの連携をやっているようです。
私もTcl/Tkは好きなので普段からよく使います。
そして、Tcl/TkとCやC++の連携もよくやります。

Tcl/TkとC++を連携するには、基本は北本が紹介している(これから紹介する?)のと同じ方法を使います。
けれども、決まり切ったコードを何度も書かなければならず、なるべくなら楽をしたいものです。

そんなときのためにC++とTclを連携するためのライブラリがあれば便利です。
今回紹介するC++/Tclもそんなライブラリのひとつです。

実は、C++/Tclはかなり前から知っていたのですが、Boost C++ Librariesに依存していたりしてあまり使う気にならなかったのです。
その後、C++もバージョンアップし、C++/Tclで使われてたBoost C++ Librariesの機能であるshared_ptrやbindは標準ライブラリに取り込まれました。

誰でも考えることは同じで、新しいバージョンのC++を使うことでBoost C++ Librariesへの依存をなくし、その他もろもろの改良を加えた形でC++/Tclがメンテナンスされているようです。
最新のバージョンは2.2.1で今年の4月にリリースされたようです。

早速ダウンロードして内容を確認してみました。
Boost C++ Librariesには依存しなくなっていますが、今度はCMakeに依存するようになっています。
CMakeはMSYS2の環境では使いにくいので個人的には好きではありません。

案の定、MSYS2上のMinGW64でのビルドを試みましたが、エラーが発生してうまくいきません。
ある程度は試行錯誤しましたが、ちょっと面倒なのでMSYS2は後回しにして、先にFedora上でビルドしてみることにしました。

Fedoraではあっさりとビルドに成功しました。
examplesにあったサンプルも動作することを確認しました。

C++/Tclはよくできたライブラリで、結構な高機能です。
ただ、C++とTclの連携をしやすくする程度のライブラリであれば、私としてはCMakeなんかに依存せずにインクルードするだけですぐに使えるほうが好みです。
それに、C++のクラスをTclにバインドするとか、そんな凝った機能はまったくいらないんですよ。

以前、Tcl/Tkのラッパーライブラリを作ろうとしたことがありました。
しかし、よくよく考えてみると、Tclの簡単なラッパーさえあればそれで十分ということに気付きました。
今後は自分が普段使うためのインクルードレベルのライブラリを整備していきたいと考えています。

    上に戻る