如果在Samsung Galaxy S II上使用HDMI输出,是否可以检测(Java或本机代码)?我正在查看系统属性,sysfs但无法找到与HDMI输出相关的任何信息.
我有一个共享库libfoo.so,需要在我的Android应用程序中使用它.
我的第一次尝试是在Android.mk中:
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := test.cpp
LOCAL_LDLIBS := -L$(PATH_TO_FOO) -lfoo
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
在我的活动中,我有:
statis
{
System.loadLibrary("foo");
}
Run Code Online (Sandbox Code Playgroud)
这构建正确,但我注意到创建的apk不包括libfoo.so(我也看到它没有复制到libs/armeabi).我想因为这个原因我在执行我的应用程序时遇到了UnsatisfiedLinkError.
我在其他一些帖子中看到我需要添加$(PREBUILD_SHARED_LIBRARY),所以我将以下内容添加到我的Android.mk中:
include $(CLEAR_VARS)
LOCAL_MODULE:= foo
LOCAL_SRC_FILES := $(FOO_PATH)/libfoo.so
include $(PREBUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
但现在我收到了构建错误:
foo: LOCAL_SRC_FILES points to a missing file.
Run Code Online (Sandbox Code Playgroud)
我确信路径是正确的.请注意,libfoo.so原本是最后的版本号,但我必须删除它(并且只留下.so),因为ndk-build抱怨.
我究竟做错了什么?
我有所有符号的偏移地址(通过 libelf 在其自己的二进制文件 .so 上执行获得)。现在,在运行时,我需要计算所有这些符号的绝对地址,为此我需要获取基地址(加载共享库的位置)并进行计算:
symbol_address = base_address + symbol_offset
共享库如何获得自己的基地址?在 Windows 上,我会使用传递给 DllMain 的参数,在 linux 中是否有一些等价物?