GAP FAQは、これについてかなり悲観的であるように思われます。
8.1:別のプログラムからGAP関数を呼び出すことはできますか?
簡単な答えはノーです。もう少し詳しく説明すると、基本的にGAPシステムのすべての代数機能はGAP言語で記述されているため、GAPインタープリターを実行する必要があります。インタプリタはCで記述されていますが、さまざまな理由で同じプロセスで他のコードとうまく共存できないため、GAPをC、Java、または他のプログラムにサブルーチンライブラリとしてリンクする賢明な方法はありません。
ただし、いくつかの希望があります。
できることは、子プロセスでGAPを実行し、パイプ、疑似tty、UNIX FIFO、または同様のデバイスを使用してGAPと通信することです。これは多くのプロジェクトで成功を収めています。このルートをたどりたい場合は、サポートリストに連絡して詳細なアドバイスを得ることができます。
アップデート
FAQには次のようにも書かれています。
比較的最近、SAGE開発者の一部がlibGAPを作成しました。これにより、GAPシステム全体をCライブラリとして組み込むことができます。ただし、それでも個々の関数を単独で埋め込むことはできず、libGAPを最初に呼び出すには、完全なGAP起動シーケンスを呼び出す必要があります。
または、GAPをサーバープロセスとして実行し、C++プログラムのCから呼び出す方法はいくつかあります。GAP側のSCSCPパッケージを参照してください。クライアント側を実装するCおよびC++ライブラリがいくつかあります。