【问题标题】:Wrapping boost::shared_ptr in PHP using SWIG使用 SWIG 在 PHP 中包装 boost::shared_ptr
【发布时间】:2011-03-18 14:32:24
【问题描述】:

如果我使用 SWIG 来包装这个 C++ 函数:

boost::shared_ptr<Client> Client::create() {
    return boost::shared_ptr<Client>(new Client());
}

然后在 PHP 中调用它:

$client = Client::create();
echo gettype($client);

$client 的类型是resource,而不是object,所以我不能调用Client 方法。

我有哪些包装这个函数的选项?我正在为其他人的 C++ 库创建一个 PHP 包装器,因此重新编写代码以不使用 boost::shared_ptr 并不是一个真正的选择。

这是迄今为止我想出的唯一解决方案:

MyClient Client::createObject() {
    return *Client::create();
}

并在 PHP 中调用它:

$client = Client::createObject();
echo gettype($client);

现在$client 的类型是object,我可以在上面调用Client 方法。这是一个合理的解决方法吗?如果没有,我该怎么办?

【问题讨论】:

    标签: php swig shared-ptr php-extension


    【解决方案1】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多