android-ndk-profiler неопределенная ссылка на monstartup и moncleanup

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

В Audio.h, Я имею:

extern "C" {
void monstartup(char const*);
void moncleanup();
}

В Audio.cpp, Я имею:

#include "Audio.h"com_example_native_init(JNIEnv *env, jobject thiz) {
// Start profiling
monstartup("libDMAudiolib.so");
...
}

Я собираю с

ndk-build NDK_MODULE_PATH=/cygdrive/c/ndk_modules

И точная ошибка компиляции, которую я получаю,

Path/to/Audio.cpp:136: error: undefined reference to 'monstartup'

Есть ли гуру андроид ndk, кто может сказать мне, что происходит?

2

Решение

Звучит как monstartup не получает ссылки (это похоже на ошибку компоновщика, а не на ошибку компилятора).

Убедитесь, что ваш Android.mk имеет дополнения, показанные на Страница использования, особенно LOCAL_STATIC_LIBRARIES директивы.

1

Другие решения

ndk-build не очень хорошо работает с Cygwin. Пожалуйста, используйте C:/ndk-modules и аналогичные обозначения в ваших сценариях.

LOCAL_STATIC_LIBRARIES := android-ndk-profiler

правильно, но это требует, чтобы ваш Andorid.mk включает в себя что-то вроде

include $(CLEAR_VARS)
LOCAL_PATH := c:/ndk-modules/android-ndk-profiler
LOCAL_MODULE := android-ndk-profiler
LOCAL_SRC_FILES := libandprof.a
include $(PREBUILT_STATIC_LIBRARY)

(увидеть http://android-ndk-profiler.googlecode.com/svn-history/r11/wiki/Usage.wiki)

1

Это произошло со мной, и это произошло из-за того, что LOCAL_STATIC_LIBRARIES не в том месте в файле Android.mk. В частности, это должно было быть перед строкой «include $ (BUILD_SHARED_LIBRARY)».

0
По вопросам рекламы [email protected]