Android ndk 构建pjSip 2.5-无法未定义对';pj#u jni#u jvm';
尝试使用以下指南从Android源代码构建pjSIP-Android ndk 构建pjSip 2.5-无法未定义对';pj#u jni#u jvm';,android-ndk,pjsip,Android Ndk,Pjsip,尝试使用以下指南从Android源代码构建pjSIP- pjsip的检查来源(2.5) 导出ANDROID\u NDK\u ROOT=/home/dev/ANDROID/ANDROID-NDK-r9b 导出目标_ABI=armeabi 导出应用程序_平台=android-13 /配置android--使用ndk cflags--禁用视频--禁用l16-codec--禁用gsm编解码器--禁用g722-codec--禁用g7221-codec--禁用ssl--禁用ilbc编解码器--禁用tls 配
/配置android--使用ndk cflags--禁用视频--禁用l16-codec--禁用gsm编解码器--禁用g722-codec--禁用g7221-codec--禁用ssl--禁用ilbc编解码器--禁用tls
../src/pj/guid_android.c:43: error: undefined reference to 'pj_jni_jvm'
../src/pj/guid_android.c:117: error: undefined reference to 'pj_jni_jvm'
导致此错误的linked调用的命令
/home/dev/android/android-ndk-r9b/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -o ../bin/pjlib-test-arm-unknown-linux-androideabi \
output/pjlib-test-arm-unknown-linux-androideabi/main.o output/pjlib-test-arm-unknown-linux-androideabi/activesock.o output/pjlib-test-arm-unknown-linux-androideabi/atomic.o output/pjlib-test-arm-unknown-linux-androideabi/echo_clt.o output/pjlib-test-arm-unknown-linux-androideabi/errno.o output/pjlib-test-arm-unknown-linux-androideabi/exception.o output/pjlib-test-arm-unknown-linux-androideabi/fifobuf.o output/pjlib-test-arm-unknown-linux-androideabi/file.o output/pjlib-test-arm-unknown-linux-androideabi/hash_test.o output/pjlib-test-arm-unknown-linux-androideabi/ioq_perf.o output/pjlib-test-arm-unknown-linux-androideabi/ioq_udp.o output/pjlib-test-arm-unknown-linux-androideabi/ioq_unreg.o output/pjlib-test-arm-unknown-linux-androideabi/ioq_tcp.o output/pjlib-test-arm-unknown-linux-androideabi/list.o output/pjlib-test-arm-unknown-linux-androideabi/mutex.o output/pjlib-test-arm-unknown-linux-androideabi/os.o output/pjlib-test-arm-unknown-linux-androideabi/pool.o output/pjlib-test-arm-unknown-linux-androideabi/pool_perf.o output/pjlib-test-arm-unknown-linux-androideabi/rand.o output/pjlib-test-arm-unknown-linux-androideabi/rbtree.o output/pjlib-test-arm-unknown-linux-androideabi/select.o output/pjlib-test-arm-unknown-linux-androideabi/sleep.o output/pjlib-test-arm-unknown-linux-androideabi/sock.o output/pjlib-test-arm-unknown-linux-androideabi/sock_perf.o output/pjlib-test-arm-unknown-linux-androideabi/ssl_sock.o output/pjlib-test-arm-unknown-linux-androideabi/string.o output/pjlib-test-arm-unknown-linux-androideabi/test.o output/pjlib-test-arm-unknown-linux-androideabi/thread.o output/pjlib-test-arm-unknown-linux-androideabi/timer.o output/pjlib-test-arm-unknown-linux-androideabi/timestamp.o output/pjlib-test-arm-unknown-linux-androideabi/udp_echo_srv_sync.o output/pjlib-test-arm-unknown-linux-androideabi/udp_echo_srv_ioqueue.o output/pjlib-test-arm-unknown-linux-androideabi/util.o -lpj-arm-unknown-linux-androideabi -nostdlib -L/home/dev/android/android-ndk-r9b/platforms/android-13/arch-arm/usr/lib -L/home/dev/android/android-ndk-r9b/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/ -lm /home/dev/android/android-ndk-r9b/platforms/android-13/arch-arm/usr/lib/crtbegin_so.o -lgnustl_static -lc -lgcc -ldl -lOpenSLES -llog -L/home/dev/android/pjproject-2.5/pjlib/lib -L/home/dev/android/pjproject-2.5/pjlib-util/lib -L/home/dev/android/pjproject-2.5/pjnath/lib -L/home/dev/android/pjproject-2.5/pjmedia/lib -L/home/dev/android/pjproject-2.5/pjsip/lib -L/home/dev/android/pjproject-2.5/third_party/lib -nostdlib -L/home/dev/android/android-ndk-r9b/platforms/android-13/arch-arm/usr/lib -L/home/dev/android/android-ndk-r9b/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/
guid_androind.c的代码
#include <pj/guid.h>
#include <pj/log.h>
#include <pj/string.h>
#include <jni.h>
extern JavaVM *pj_jni_jvm;
static pj_bool_t attach_jvm(JNIEnv **jni_env)
{
if ((*pj_jni_jvm)->GetEnv(pj_jni_jvm, (void **)jni_env,
JNI_VERSION_1_4) < 0)
{
if ((*pj_jni_jvm)->AttachCurrentThread(pj_jni_jvm, jni_env, NULL) < 0)
{
jni_env = NULL;
return PJ_FALSE;
}
return PJ_TRUE;
}
return PJ_FALSE;
}
#define detach_jvm(attached) \
if (attached) \
(*pj_jni_jvm)->DetachCurrentThread(pj_jni_jvm);
#包括
#包括
#包括
#包括
外部JavaVM*pj_jni_jvm;
静态pj_bool_t attach_jvm(JNIEnv**jni_env)
{
如果((*pj_jni_jvm)->GetEnv(pj_jni_jvm,(void**)jni_env,
JNI_版本_1_4)<0)
{
if((*pj_jni_jvm)->AttachCurrentThread(pj_jni_jvm,jni_env,NULL)<0)
{
jni_env=NULL;
返回PJ_FALSE;
}
返回PJ_TRUE;
}
返回PJ_FALSE;
}
#定义jvm(已连接)\
如有(附件)\
(*pj_-jni_-jvm)->DetachCurrentThread(pj_-jni_-jvm);
一整天都在与这个错误作斗争,任何线索都值得高度赞赏。同时,我能够构建2.3版,没有任何错误,但不是2.5版,我相信您错过了一步。 将config_site.h设置为以下值:
/* Activate Android specific settings in the 'config_site_sample.h' */
#define PJ_CONFIG_ANDROID 1
#include <pj/config_site_sample.h>
/*在“config\u site\u sample.h”中激活Android特定设置*/
#定义PJ_配置_ANDROID 1
#包括
我相信你错过了一步。
将config_site.h设置为以下值:
/* Activate Android specific settings in the 'config_site_sample.h' */
#define PJ_CONFIG_ANDROID 1
#include <pj/config_site_sample.h>
/*在“config\u site\u sample.h”中激活Android特定设置*/
#定义PJ_配置_ANDROID 1
#包括