[英]How can I pass an array from perl to inline C++?
我不知道這是一個錯誤還是什么。
以下代碼適用於Inline::C
但不適用於Inline::CPP
#!/usr/bin/perl
use warnings;
use Inline C;
my @array = (1..10);
print findAvLen(\@array), "\n";
__END__
__C__
int findAvLen(AV* arrayIn) {
return av_len(arrayIn);
}
上面運行正常,但是用CPP
替換C
,我得到錯誤Can't locate auto/main/findAvLen.al in @INC...
我可以讓其他內聯 c++ 代碼工作。 例如,可以像本例中那樣將變量列表傳遞給帶有省略號的內聯代碼,但我想知道為什么 AV* 不起作用,例如,我想使用一個子例程來轉換 perl arrays 傳遞給 C++ 到向量中。 例如void perl2vector(AV* ar, std::vector<T> &v) {...}
,而不是將代碼插入到每個 C++ function 中執行這種轉換,我寫了一個數組參數。 我如何使用該示例的語法將 perl 數組傳遞給這樣的轉換器?
這看起來確實是一個錯誤,但與此同時,uesp 已經找到了解決方法:
int findAvLen(SV* arrRef) {
AV * arr = MUTABLE_AV(SvRV(arrRef));
return av_len(arr);
}
arr
現在等同於上面示例代碼中所需的arrayIn
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.