Не могу сказать, что специально сгенерировал оболочки для библиотек Boost, но я сделал это для своих шаблонных классов.
Это вполне выполнимо, если учесть, что SWIG обернет определенные экземпляры шаблона, используя директиву %template
.
Как указано в документации, ссылки на которую приведены выше:
[...] пустой шаблон C ++ не определяет какой-либо выполняемый объектный код, для которого SWIG может обычно создавать оболочку,Поэтому, чтобы обернуть шаблон, вам нужно предоставить SWIG информацию о конкретном создании экземпляра шаблона (например, vector<int>
, array<double>
и т. Д.).Во-вторых, имя экземпляра, такое как vector<int>
, обычно не является допустимым именем идентификатора в большинстве целевых языков.Таким образом, вам нужно дать экземпляру шаблона более подходящее имя, например intvector
при создании оболочки.
С директивой ваш intvector
будет выглядеть примерно так:
%template(intvector) vector<int>;