Я пишу оболочку PHP для библиотеки C++ с помощью SWIG, но у меня возникают проблемы с использованием структуры с экземпляром типа шаблона в качестве члена данных.
Предположим, у меня есть следующий заголовочный файл:
template <typename>
struct myvector
{
};
struct S
{
myvector<int> v;
};
myvector<int> foo();
S bar();
и файл интерфейса:
%module test
%{
#include "test.hpp"
%}
%include "test.hpp"
%template(IntVec) myvector<int>;
Когда я пытаюсь использовать функцию, которая напрямую возвращает myvector
, она работает нормально:
$v1 = test::foo();
Однако, когда я пытаюсь использовать функцию, которая возвращает объект S
и пытается получить доступ к его члену данных, который имеет типmyvector
:
$s = test::bar();
$v2 = $s->v;
Я получаю следующую ошибку во время выполнения:
PHP Fatal error: Class 'myvectorT_int_t' not found in test.php on line 145
Я, вероятно, что-то упустил из моего файла интерфейса, но я не знаю, что. Кто-нибудь может помочь?