Ошибка с memset при компиляции кода C ++ для потоков в Android ndk - PullRequest
2 голосов
/ 25 декабря 2011

У меня проблема. Я хочу создать тему в Android 2.3.4 с помощью NDK r7. Когда я компилирую этот код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "System.h"
#include <jni.h>
#include <pthread.h>

unsigned int CreateThread(void* function(void*) , void * context)
{   int         ret;
    pthread_t   thread;
    ret = pthread_create(&thread, NULL, function, context);
    if(ret != 0)
    {   return 0;
    }
    return (unsigned int) thread;
}

Я получаю эти сообщения об ошибках:

E:/Code/Android/android-ndk-r7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/../lib/gcc/arm-linux-androideabi/4.4.3/include/stdarg.h:102: error: expected ';' before 'typedef'
In file included from E:/Code/Android/android-ndk-r7/platforms/android-14/arch-arm/usr/include/pthread.h:32, from jni/system.cpp:13:
E:/Code/Android/android-ndk-r7/platforms/android-14/arch-arm/usr/include/signal.h: In function 'int sigemptyset(sigset_t*)':
E:/Code/Android/android-ndk-r7/platforms/android-14/arch-arm/usr/include/signal.h:84: error: 'memset' was not declared in this scope
E:/Code/Android/android-ndk-r7/platforms/android-14/arch-arm/usr/include/signal.h: In function 'int sigfillset(sigset_t*)':
E:/Code/Android/android-ndk-r7/platforms/android-14/arch-arm/usr/include/signal.h:90: error: 'memset' was not declared in this scope

Я пропустил, чтобы включить или определить что-то, чтобы получить ошибки memset?

Я действительно не уверен, в чем проблема и почему появляются ошибки в memset. Я также попытался включить cstring, но затем я получил огромное количество ошибок.

1 Ответ

2 голосов
/ 26 декабря 2011

Я нашел проблему. У меня есть свой собственный класс, который имеет имя файла, которое называется «string.h» и находится в моем каталоге jni. Поэтому "string.h", который находится в ndk и имеет объявление необходимой функции memset (среди прочего), не включается.

Варианты были либо изменить имя файла / имя моего класса, либо напрямую включить string.h из ndk с прямым путем.

Я выбрал первый вариант и переименовал свой строковый класс и теперь стараюсь не использовать стандартные имена файлов для моих классов ...

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