我有這段代碼:VALA Posix.lstat()錯誤
using Posix;
int fuseguifs_getattr(string path, Posix.Stat *stbuf)
{
int res;
res = Posix.lstat(path, stbuf);
if (res == -1)
return -Posix.errno;
return 0;
}
static int main(string [] args)
{
Posix.Stat *a;
fuseguifs_getattr("/home/leon", a);
return 0;
}
當我試圖編譯它,我得到這個錯誤:
test.vala:6.26-6.30: error: Argument 2: Cannot convert from
`Posix.Stat' to `Posix.Stat*'
res = Posix.lstat(path, stbuf);
^^^^^
Compilation failed: 1 error(s), 0 warning(s)
我試着改變這個: fuseguifs_getattr(「/ home/leon」,a); 至 fuseguifs_getattr(「/ home/leon」,* a);
但後來我得到一個錯誤:「無法傳遞價值,引用或輸出 參數」
我已經嘗試添加「走出去」: 解析度= Posix.lstat(路徑,出* stbuf);
這給了這個錯誤: 錯誤:ref和out方法參數只能用領域, 參數,局部變量和數組元素訪問使用
我不能改變fuseguifs_getattr方法的參數,因爲這是 這是保險絲綁定期望的一部分。
我真的被卡住了。有人如何解決這個問題?
我不能通過刪除我相信的指針來更改函數定義。該方法由fuse定義:http://fuse.sourceforge.net/doxygen/structfuse__operations.html#7a4c5d8eaf7179d819618c0cf3f73724 如果我從函數中的stbuf中刪除指針,我得到這個錯誤: 無法從'fuseguifs_getattr'轉換爲' Fuse.GetAttr':( – Leon
fuse.vapi有一個非常奇怪的編碼方式,它應該可能被改變。下面的方式對VAPI來說是很好的。 – apmasell