Mam problemy z używaniem wewnętrznych i wewnętrznych elementów NEON w Android NDK.Wewnętrzne typy NEON działają w języku C, ale powodują błąd nieprawidłowych argumentów w C++
rodzaje NEON jak float32x4_t
dają „nieprawidłowe argumenty” błąd podczas kompilacji kodu C++ z GCC 4.6 i 4.8, natomiast kod kompiluje grzywny, jeśli skompilowany jak C
Na przykład, oto niektóre kod:
inline float32x4_t VectorAdd(float32x4_t a, float32x4_t b)
{
return vaddq_f32(a, b);
}
mam dwa błędy tutaj:
- w samej funkcji:
Invalid arguments ' Candidates are: ? vaddq_f32(?, ?) '
. - Gdzie jest wywoływana funkcja:
Invalid arguments ' Candidates are: ? VectorAdd(?, ?) '
.
Wszystkie typy NEON są wyświetlane jako? w komunikacie o błędzie, podczas gdy typy inne niż NEON są wyświetlane poprawnie.
Dziwne jest również to, że funkcje, które używają tylko typów NEON jako wartości zwracanych (na przykład, vld1q_f32
i moje abstrakcyjne opakowanie) nie cierpią z powodu błędu.
Próbowałem tego samego kodu w GCC Explorer 4,6 i 4,5, i nie ma błędu, a poprawny i zoptymalizowany zespół jest generowany, jednak nie działa z Androidem NDK.
To może być głupie pytanie ... ale czy są to błędy indeksowania zaćmień, czy są to błędy kompilatora? To znaczy. jeśli używasz ndk-build z wiersza poleceń, czy otrzymujesz dokładne błędy zgodnie z opisem? – krsteeve
O tak, to błąd Eclipse. Sprawdziłem konsolę, wszystko w porządku. – Triang3l
Niestety istnieje błąd indeksowania zaćmienia przy korzystaniu z CDT z ADT - mówiłem o tym w mojej odpowiedzi tutaj: http://stackoverflow.com/questions/13924184/migrate-a-c-program-to-android-ndk/18277247#18277247 – krsteeve