2014-08-19 2 views
0

Я работаю над созданием библиотеки для взаимодействия с Pandora. Я основываю свой код blowfish на библиотеке python, но мне сложно скомпилировать его. Vala не сообщает об ошибках, пока не попытается сгенерировать исходные файлы C. Это ошибка, я получаю:Не удалось выполнить компиляцию Vala с vala_ccode_array_module_real_get_array_length_cvalue: утверждение не выполнено

[email protected]:~/projects/libpanda$ valac --thread lib/crypto.vala -C -v 
Loaded package `/usr/share/vala-0.26/vapi/glib-2.0.vapi' 
Loaded package `/usr/share/vala-0.26/vapi/gobject-2.0.vapi' 
lib/crypto.vala:192.42-192.60: warning: chained relational expressions are experimental 
    public Blowfish(string key) requires(8 < key.length < 56){ 
             ^^^^^^^^^^^^^^^^^^^ 
** 
ERROR:valaccodearraymodule.c:1105:vala_ccode_array_module_real_get_array_length_cvalue: assertion failed: (size != null && size.size >= dim) 
Aborted (core dumped) 

Вы можете найти исходный код в моем хранилище мерзавца here. Я не уверен, что это ошибка с самой vala или моим кодом. У меня такое чувство, что оно имеет какое-то отношение к многомерным массивам, поскольку оно собиралось вчера, когда sbox были одномерными массивами.

EDIT: Похоже, что это проблема с самой валой. Оказывается, вы не можете присвоить значение const многомерного массива в другой переменной:

public class TestClass : GLib.Object{ 
    public static const int[,] ff = {{1,2},{3,4}}; 

    public int[,] asdf; 

    public TestClass(){ 
     asdf = TestClass.ff; 
    } 

    public static int main(string[] args){ 
     var t = new TestClass(); 
     return 0; 
    } 
} 
+0

Какую версию Вала? Можете ли вы создать минимальный тестовый пример? – apmasell

+0

0,24. Я понятия не имею, что это вызывает, но у меня должно быть время, чтобы посмотреть на это завтра утром. – nlowe

ответ

0

Как указано в моем редактирования выше, по-видимому, вы не можете присвоить значение const многомерного массива в другой переменной:

public class TestClass : GLib.Object{ 
    public static const int[,] ff = {{1,2},{3,4}}; 

    public int[,] asdf; 

    public TestClass(){ 
     asdf = TestClass.ff; 
    } 

    public static int main(string[] args){ 
     var t = new TestClass(); 
     return 0; 
    } 
} 

Я подал ошибку с Вала команды here

Смежные вопросы