0
uint16을 키로 사용하여 바이트 배열 (예 : "a {qay}")에 매핑하는 사전에 G_Variant 포인터를 반환하려고합니다. 여기 GLib의 배열에 매핑되는 사전을 어떻게 만듭니 까?
내 시도입니다 :#define KEY 0xDEAD
#define BYTE1 0xBE
#define BYTE2 0xEF
GVariantBuilder *arrBuilder, *builder;
GVariant *arr;
//build array of bytes ('ay')
arrBuilder = g_variant_builder_new(G_VARIANT_TYPE("ay"));
g_variant_builder_add(arrBuilder, "y", BYTE1);
g_variant_builder_add(arrBuilder, "y", BYTE2);
arr = g_variant_new("v",g_variant_new("ay", arrBuilder));
//put it in a dict ('a{sv}')
builder = g_variant_builder_new(G_VARIANT_TYPE("a{qay}"));
g_variant_builder_add(builder, "{qay}", KEY, arr);
return g_variant_builder_end(builder);
그것은 작동하지 않습니다와 나는 D-버스에이 속성 쿼리하려고 할 때 다음과 같은 오류 메시지가 :
(process:18319): GLib-CRITICAL **: g_variant_builder_end: assertion 'is_valid_builder (builder)' failed
(process:18319): GLib-CRITICAL **: g_variant_get_type: assertion 'value != NULL' failed
(process:18319): GLib-CRITICAL **: g_variant_type_is_array: assertion 'g_variant_type_check (type)' failed
(process:18319): GLib-CRITICAL **: g_variant_get_type_string: assertion 'value != NULL' failed
(process:18319): GLib-ERROR **: g_variant_new: expected array GVariantBuilder but the built value has type '(null)'
Trace/breakpoint trap (core dumped)
나는 당신의 제안을 시도하고 나는 동일한 오류 메시지가 때
난 당신 같은 오류를했다. 나는 또한 시도했다 : "arr = g_variant_new ("ay ", g_variant_builder_end (arrBuilder));" 같은 결과로 같은 줄에 흠 –