1
我寫在瓦拉這個代碼,使用駱駝瓦拉錯誤「未知類型名稱」使用枚舉從駱駝
using Camel;
[...]
MimeParser par = new MimeParser();
[...]
par.push_state(MimeParserState.MULTIPART, boundary);
我下載了駱駝1.2.vapi從GitHub VALA-girs (this link),把它在VAPI子目錄,並與
valac --vapidir=vapi --includedir=/usr/include/evolution-data-server/camel --pkg camel-1.2 --pkg posix --target-glib=2.32 -o prog prog.vala -X -lcamel-1.2
編譯編譯我得到這個錯誤:
error: unknown type name "CamelMimeParserState"
const gchar* camel_mime_parser_state_to_string (CamelMimeParserState self);
查看C輸出代碼,我發現CamelMimeParserState類型被多次使用,但從未定義過。這應該是一個簡單的枚舉因爲駱駝1.2.vapi文件說:
[CCode (cheader_filename = "camel/camel.h", cprefix = "CAMEL_MIME_PARSER_STATE_", has_type_id = false)]
public enum MimeParserState {
INITIAL,
PRE_FROM,
FROM,
HEADER,
BODY,
MULTIPART,
MESSAGE,
PART,
END,
EOF,
PRE_FROM_END,
FROM_END,
HEADER_END,
BODY_END,
MULTIPART_END,
MESSAGE_END
}
那麼,爲什麼不是C輸出代碼只需使用一個枚舉作爲VAPI文件說(由cprefix描述CAMEL_MIME_PARSER_STATE_)?
.vapi文件中是否有錯誤?