2011-12-25 3 views
1

У меня проблема. Я хочу создать поток в Android 2.3.4 с NDK r7. Когда я компилирую этот код:Ошибка с memset при компиляции кода C++ для потоков в android ndk

#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

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

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

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

+0

На самом деле я нашел эту проблему, потому что кто-то наткнулся на него, а поэтому я решил оставить вопрос как есть. Я хочу, чтобы иногда больше ответов было в сети без удаления, так как даже некоторые «локализованные вопросы» могут быть полезны для некоторых ... – HardCoder

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