Ошибка Android NDK: переименование функции невозможно - PullRequest
1 голос
/ 03 ноября 2011

Мне удалось заставить мой проект Android работать с проектом Visual Studio. Единственная проблема, с которой я столкнулся - это когда я компилировал проект c ++, компилятор vsc ++ выдает мне эту ошибку:

android-ndk-r6b\platforms\android-9\arch-x86\usr\include\sys\cdefs.h(252): fatal error C1189: #error : "No function renaming possible"

Если бы у кого-то была эта проблема раньше, любой вход был бы хорош.

Ошибка возникает, когда я включаю .h, который содержит, включает в себя эти файлы

  • jni.h
  • андроид \ log.h

РЕДАКТИРОВАТЬ:

Я посмотрел на cdefs.h в строке 252:

245 | #if !defined(_STANDALONE) && !defined(_KERNEL)
246 | #ifdef __GNUC__
247 | #define   __RENAME(x) ___RENAME(x)
248 | #else
249 | #ifdef __lint__
250 | #define   __RENAME(x) __symbolrename(x)
251 | #else
252 | #error "No function renaming possible"
253 | #endif /* __lint__ */
254 | #endif /* __GNUC__ */
255 | #else /* _STANDALONE || _KERNEL */
256 | #define   __RENAME(x) no renaming in kernel or standalone environment
257 | #endif

Но, честно говоря, я не уверен, что означает отсутствие переименования ...

Ответы [ 3 ]

1 голос
/ 30 июля 2012

Кажется, что cdefs.h из $(NDKROOT)/.../includes как-то конфликтует с "1003 * по умолчанию" из Visual Studio. Попробуйте напрямую обратиться к папке android в ваших включениях и замените #include <android/log.h> на #include <log.h> в исходном файле.

Относительно jni.h У меня нет дальнейших подсказок ...

0 голосов
/ 13 марта 2015

Я хотел сделать то же самое, скомпилировать мой код Android с помощью Visual Studio. Даже несмотря на то, что в Studio нет эмулятора планшета, я, по крайней мере, мог бы запустить часть своей логики в Studio, части, не связанные с Android (например, рисование пользовательского интерфейса). Зачем беспокоиться о такой ограниченной среде разработки? Ну, просто потому, что в Studio есть очень хороший редактор C ++, и он компилируется гораздо быстрее, чем Android Studio / Gradle. И у меня есть много логики, не связанной с пользовательским интерфейсом, которую я должен понять правильно. Поэтому я делю свою работу на предварительный этап, который, я думаю, можно сделать быстрее с помощью Studio.

Для меня я скопировал через jni.h (из папки x86 android NDK). И я сделал несколько настроек ...

#define __NDK_FPABI__
//#include <sys/cdefs.h>
...
#define JNIEXPORT  //gdh: __attribute__ ((visibility ("default")))

Это сделало студию счастливой.

0 голосов
/ 03 ноября 2011

В исходном коде есть #error прагма. Найдите эту прагму и изучите ее окрестности, чтобы проверить наличие комментариев и / или #ifdef, которые могут дать вам подсказку о том, в чем проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...