小编Chr*_*ens的帖子

如何在Android NDK的Android.mk文件中正确包含预构建的静态库?

我很难将我的库包含在Android NDK构建中.

在创建虚拟cpp文件并使用shell中的直接g ++命令构建所有内容时,库已正确编译并正常工作.

当前的Android.mk文件不起作用,并抛出错误,无法找到相应的头文件(属于.a文件的一部分).

如何正确包含预构建的静态库?

我的Android.mk文件如下所示:

LOCAL_PATH := $(call my-dir)


# V8 Base

include $(CLEAR_VARS)

LOCAL_MODULE          := v8_base
LOCAL_MODULE_FILENAME := v8_base_static
LOCAL_SRC_FILES := ../lib/libv8_base.a

include $(PREBUILT_STATIC_LIBRARY)


# V8 Nosnapshot

include $(CLEAR_VARS)

LOCAL_MODULE          := v8_nosnapshot
LOCAL_MODULE_FILENAME := v8_nosnapshot_static
LOCAL_SRC_FILES := ../lib/libv8_nosnapshot.a

include $(PREBUILT_STATIC_LIBRARY)


# V8GL Runtime

include $(CLEAR_VARS)

LOCAL_MODULE    := v8gl-runtime
LOCAL_SRC_FILES := main.c ../src/v8gl/v8gl.cpp
LOCAL_CPPFLAGS  := -D__ANDROID__
LOCAL_LDLIBS    := -llog -landroid -lEGL -lGLESv1_CM
LOCAL_STATIC_LIBRARIES := android_native_app_glue v8_base v8_nosnapshot

# LOCAL_EXPORT_CPPFLAGS := -D__ANDROID__

include $(BUILD_SHARED_LIBRARY)

$(call import-module,android/native_app_glue)
Run Code Online (Sandbox Code Playgroud)

编译器输出如下,这是有道理的,但只显示我没有包含单个.a文件,我不知道为什么:

Compile++ thumb …
Run Code Online (Sandbox Code Playgroud)

c++ android android-ndk

6
推荐指数
1
解决办法
1万
查看次数

如何使用多个v8 :: Context s正确地重用global_object?

我正在使用OpenGL实现重构我的V8并且遇到了执行上下文的问题.

这个概念如下:

  • V8GL::initialize() 此方法初始化上下文和全局模板.它还使用上下文来表示过剩,因为有几个循环运行,它们也暴露给JS上下文.(例如glut.mainLoop())

  • V8GL::execute(context, source, url) 此方法主要在给定上下文中执行字符串.我认为必须采用这种方式来隔离使用间隔/超时.

什么行不通:

V8GL::initialize()还附加内置的JavaScript文件并执行它们.这完全没问题.

简化代码:

V8GL::initialize(...) {
    v8::Persistent<v8::Context> context = v8::Context::New(NULL, globalTemplate);
    v8::Context::Scope context_scope(context);

    // cached for glut mainLoop etc.
    GlutFactory::context_ = v8::Persistent<v8::Context>::New(context);

    execute(context, v8::String::New(...script content...), v8::String::New(...script url path to show for exception stacktraces...);


    // after all the stuff was dispatched to the global context, I want to cache the global object for later usage.
    v8gl::global = v8::Persistent<v8::Object>::New(context->Global());
    context->DetachGlobal();
    context.Dispose();

}

V8GL::execute(context, source, filename) {

    v8::HandleScope scope;
    // Previously, I had …
Run Code Online (Sandbox Code Playgroud)

c++ v8 embedded-v8

5
推荐指数
0
解决办法
1490
查看次数

标签 统计

c++ ×2

android ×1

android-ndk ×1

embedded-v8 ×1

v8 ×1