0

Android NDK で Soundtouch ライブラリをコンパイルしようとしています。Soundtouch ライブラリに必要な Cygwin と SWIG のインストールに成功しました。ndk-build.cmd を実行しようとすると、エラーが発生します

jni/soundtouch/wrapper_wrap.cpp: 関数 'void Java_com_talkingyeti_jni2_wrapperJNI_SoundTouch_1putSamples(JNIEnv*, _jclass*, jlong​​, _jobject*, jlong​​, jlong​​)': jni/soundtouch/wrapper_wrap.cpp:545: エラー: 'SAMPLETYPE' が宣言されていませんこのスコープ jni/soundtouch/wrapper_wrap.cpp:545: エラー: 'arg2' はこのスコープ jni/soundtouch/wrapper_wrap.cpp:553 で宣言されていません: エラー: ')' トークン jni/soundtouch/wrapper_wrap の前にプライマリ式が必要です。 cpp:560: エラー: 'const' の前に ')' が必要です jni/soundtouch/wrapper_wrap.cpp:560: エラー: ';' の前に ')' が必要です token make: * [obj/local/armeabi/objs/soundtouch/wrapper_wrap.o] エラー 1

この問題は、次の wrapper_wrap.cpp のブロックで発生します。

  SWIGEXPORT void JNICALL Java_com_talkingyeti_jni2_wrapperJNI_SoundTouch_1putSamples(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2, jlong jarg3) {
  soundtouch::SoundTouch *arg1 = (soundtouch::SoundTouch *) 0 ;
  SAMPLETYPE *arg2 = (SAMPLETYPE *) 0 ;
  uint arg3 ;
  uint *argp3 ;

  (void)jenv;
  (void)jcls;
  (void)jarg1_;
  arg1 = *(soundtouch::SoundTouch **)&jarg1; 
  arg2 = *(SAMPLETYPE **)&jarg2; 
  argp3 = *(uint **)&jarg3; 
  if (!argp3) {
    SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "Attempt to dereference null uint");
    return ;
  }

NDK を適切にコンパイルして SO ファイルを生成するために、SAMPLETYPE にどのような変更を加える必要があるかを教えてください。

4

1 に答える 1

2

ヘッダーを見逃したようです。以下があることを確認してください。

#include "soundtouch/include/SoundTouch.h"

using namespace soundtouch;
于 2013-10-24T11:34:37.227 に答える