gpt4 book ai didi

perl - 将 C++ 指针返回给 perl

转载 作者:行者123 更新时间:2023-12-01 05:37:21 25 4
gpt4 key购买 nike

我在 C++ 中有一个函数,例如:

void* getField(interface* p)   
{
int* temp = new int( p->intValue);
cout<< "pointer value in c++" << temp << "value of temp = " << temp << endl;
return temp;
}

我正在使用 SWIG 为上述类生成包装器。现在我试图在 Perl 中获取返回的指针值。我该怎么做??
我编写了以下 perl 脚本来调用该函数:

 perl  
use module;
$a = module::create_new_interface();
$b = module::getField();
print $b,"\n";
print $$b, "\n";

我已经正确定义了 create_interface 函数,因为调用函数 getField() 时会打印接口(interface)的正确 intValue。

程序的输出如下:

_p_void=SCALAR(0x5271b0)
5970832
pointer value in c++ 0x5b1b90 value of temp 22

为什么这两个值 - C++ 中的指针和 perl 中的引用不同?我如何从引用中获取 intValue? (即值 22 )

最佳答案

因为你打印了一个十进制和一个十六进制:

 printf "pointer is 0x%x\n", $$b;   # prints "pointer is 0x5b1b90"

Perl 通常不使用指针。 packunpack函数可以处理指针(参见 Packing and Unpacking C Structures ),但正常的 Perl 习惯用法是让函数返回一个整数而不是指向整数的指针。

关于perl - 将 C++ 指针返回给 perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6276251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com