После дополнительных исследований я определил, что моя проблема - проблема с неназванными профсоюзами, а не анонимными. JNAerator заявляет о поддержке анонимных союзов, но я ничего не нашел о неназванных союзах. Исходя из моего опыта, я бы сказал, что он не поддерживает безымянные союзы.
Примечание: Безымянные объединения не поддерживаются в стандартном C. Некоторые компиляторы поддерживают его, но не большинство. Это стандартно в C ++.
Анонимный Союз:
typedef struct MY_STRUCTURE {
int i;
char c;
union {
My_Type1 var1;
My_Type2 var2;
}UnionName;
}MY_STRUCTURE;
Анонимный и Безымянный Союз:
typedef struct MY_STRUCTURE {
int i;
char c;
union {
My_Type1 var1;
My_Type2 var2;
};
}MY_STRUCTURE;
Вывод: отмечает решение
Измените безымянное объединение в заголовке на именованное объединение, затем JNAerate Java-код и затем измените заголовок обратно, как это было. Как сказал Марк, это не изменит расположение памяти, поэтому вы можете изменить имя.