сначала, некоторые определения из /usr/share/vala/vapi/libarchive.vapi
[CCode (cprefix="ARCHIVE_", lower_case_cprefix="archive_", cheader_filename = "archive.h")]
namespace Archive {...
[CCode (instance_pos = 1.9, cname="archive_open_callback")]
public delegate int OpenCallback (Archive archive);
...
[CCode (cname = "struct archive", free_function="archive_write_finish")]
public class Write : Archive {...
public Result open (
[CCode (delegate_target_pos = 0.9)] OpenCallback ocb,
[CCode (delegate_target_pos = 0.9)] WriteCallback rcb,
[CCode (delegate_target_pos = 0.9)] CloseCallback ccb
);
}
}
, затем мой код
int mOpenCallback (Write archive)
{
return Result.OK;
}
void foo(){...
Write archive = new Write();
archive.open(mOpenCallback,mWriteCallback,mCloseCallback);
...}
результаты: ошибка: Назначение: Не удается преобразовать изmOpenCallback' to
Archive.OpenCallback '
что с ним не так?
тогда я попробовал это вместо
namespace Archive {
int OpenCallback (Write archive)
{
return Result.OK;
}
}
void foo(){...
Write archive = new Write();
archive.open(OpenCallback,mWriteCallback,mCloseCallback);
...}
но выдает: Archive' already contains a definition for
OpenCallback'
void foo(){...
Write archive = new Write();
Archive.OpenCallback t = mOpenCallback;
archive.open(t,mWriteCallback,mCloseCallback);
...}
выводит ошибку: Назначение: Невозможно преобразовать из foo.mOpenCallback' to
Archive.OpenCallback '