2011-12-25 14 views
1

問題があります。 NDK r7を使ってAndroid 2.3.4にスレッドを作成したいと思います。私はこのコードをコンパイルするとき:アンドロイドのndkのスレッド用にC++コードをコンパイルするときにmemsetでエラーが発生する

#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ディレクトリ内に存在するファイル名を持つ私自身のクラスを持っています。したがって、ndk内に存在し、必要なmemset関数の宣言を持つ "string.h"は含まれていません。

オプションは、自分のクラスのファイル名/名前を変更するか、直接パスを使ってndkのstring.hを直接インクルードすることでした。他の誰かが同様に私が決めたので、それつまずいたので

私は最初のオプションを選択しましたし、私の文字列クラスと名前を変更し、今から私のクラスの標準的なファイル名を使用しないようにしよう...

+0

は、実際に私は問題を発見しましたそのままにしておきます。私は時には、いくつかの "ローカライズされた質問"でさえ、一部の人に使用されるかもしれないので、削除されずにネット上にもっと多くの答えがあることを望む... – HardCoder

関連する問題