我用C语言构建了一个共享库,
const char foo[] = "foo1234"; 使用FFI::Platypus,我可以使用以下命令获取符号位置
print $ffi->find_symbol('foo');
140204212527104如何打印出foo1234的值
发布于 2019-06-06 21:43:27
为了获得SVpv,您需要将“不透明”指针强制转换为Perl数据变量,
$ffi->cast(opaque => string => $ffi->find_symbol('foo'));发布于 2019-06-06 22:28:42
如果您知道缓冲区的位置和长度,另一个选择是从FFI::Platypus::Buffer获取buffer_to_scalar。这是一个非常接近金属的选择,因此是一个快速的选择,但它像大多数C代码一样危险,你很容易通过错误地使用它来分割错误。
https://stackoverflow.com/questions/56478909
复制相似问题