昔諦めた、
- Node.jsのC++埋め込み
- PythonのC++埋め込み
について調べた。特に後者のPythonについては、Godotから楽に呼び出せたり ( py4godot )、TouchDesignerでは普通に使えたりする(かつvenvでpip管理もできる)という状況下なので、そろそろいい方法があるかと思って調べた。
Node.jsのC++埋め込み
Rust経由で、edonを使うのが最適解だと感じた。
https://github.com/funatsufumiya/edon-test
edon、かなり簡単にきちんとNode.jsを埋め込むことができる。試しにnode.jsでしか動かないClojureScriptを呼び出し(cljsブランチ)してみたが、普通に呼び出せた。Win/Mac/Linuxで問題なく動作する。
あとはRustとC++を連携させれば良いので、大した問題ではないと思う。
ちなみにnpmとの連携についてはまだ調べていないけれど、おそらくフォルダ構造さえきちんとしていれば普通に require 等で呼び出せるのではないかと思う。
PythonのC++埋め込み
Nim経由で nimpy を使えばOK。
https://github.com/funatsufumiya/call-nim-from-c-test/tree/nimpy
こちらも特にいうことはないのだけど、どのPythonが呼び出されるかという点に注意が必要で、そのへんはリポジトリ内のメモ等を参照してほしい。
まとめ
どちらも、意外と簡単でスマートな方法があってよかった。C++から直接やろうとすると骨が折れるものなので、少し違う言語を通すだけでこれほど楽になるものがあるというのは嬉しいものだと思う。