jjzjj

android - 如何在 NDK 上将 native 运行时库与 dlopen 集成?

对于我的nativec++项目,我必须设置预编译共享库的运行时加载,客户端可以在启动时使用配置更改它。在android上调用dlopen的正确方法是什么?无论我做什么,如果我没有像这样在我的Android.mk文件中将此库定义为预编译库,dlopen永远无法打开任何共享库:LOCAL_PATH:=$(callmy-dir)LOCAL_CFLAGS+=-DDEBUGLOCAL_CFLAGS+=-DANDROIDinclude$(CLEAR_VARS)LOCAL_MODULE:=barLOCAL_SRC_FILES:=bar/bar.cppLOCAL_EXPORT_C_INCLUDES:=

Android NDK : Getting java. lang.UnsatisfiedLinkError: dlopen failed: 找不到 "signal"引用的符号 "libffmpeg.so"

我有一个视频剪辑应用程序代码。其Android.mk文件代码如下:MY_LOCAL_PATH:=$(callmy-dir)包含$(all-subdir-makefiles)LOCAL_PATH:=$(MY_LOCAL_PATH)include$(CLEAR_VARS)LOCAL_MODULE:=video-trimmerLOCAL_SRC_FILES:=video-trimmer.cLOCAL_C_INCLUDES:=$(MY_LOCAL_PATH)$(MY_LOCAL_PATH)/ffmpegLOCAL_SHARED_LIBRARIES:=ffmpegLOCAL_LDLIBS+=-l

Android 依赖三方so库报错找不到dlopen failed:xxx not found 显示磁盘路径

场景:app中有a模块,在a模块中通过cmake构建libso_a.so,libso_a.so依赖编译好的三方库libso_b.so,编译运行后打开即崩溃....问题一:so库加载失败,无法找到且报错路径显示为磁盘路径;.....        java.lang.UnsatisfiedLinkError:dlopenfailed:library"E:/Hx/xxxxxxxxx/arm64-v8a/libso_b.so"notfound 通过readelf查看so_a的依赖,确实为so的全路径:cmakelists.txt中的依赖为:...add_library(so_bSHAREDIMPOR

c++ - Solaris 进程如何读取自己的符号表?

我有一个Solaris进程,它是一个C++应用程序,由ld和一些.so库加载。此应用程序有一个函数,它在调用函数中获取返回地址,然后尝试确定所述调用函数的名称。如果我为此使用dladdr(3),它并不总是将我期望看到的内容放入Dl_info::dli_sname。看起来它返回的函数名称不在指针值下方或指针值处。如果我获取指针值并查看nm的输出,我可以将该值与我期望的确切函数相匹配。我想知道是否有一种方法可以检索进程的符号映射并让它在不使用dladdr(3)的情况下搜索函数名称。我特别感兴趣的是不仅为可执行文件本身而且为它加载的所有.so库获取符号映射。我在Solaris10/SPARC

C++:在分离的共享库中实现类方法

我发现我可以在共享库中实现类的某些部分,只要在使用时加载符号即可。myclass.h---classC{voidmethod();}main.cpp---#include"myclass.h"intmain(){//dynamicallyloadmylib.sousingdlopen/dlsym/dlclose...C*c=newC();c->method();deletec;}mylib.socompiledseparately:====mylib.cpp---#include"mylib.h"voidC::method(){...}这很好用。然而,一旦我使用完C::method()

C++:dlclose 不卸载共享库

我有一个使用dlopen加载的共享库(带有标志RTLD_NOW|RTLD_GLOBAL)。如果这个库正在使用主程序中的函数,那么它不会卸载。所以我最终得到了这个共享库的相同代码,即使我卸载(使用dlclose)、更改、编译、(重新)加载它也是如此。我的目标实际上是在对同一个库进行更改后重新加载它,这样我就不必重新启动整个程序来测试我的代码。我在LinuxUbuntu10.04上使用g++4.2.3。(编辑)已解决:“由于RTLD_GLOBAL,加载的库使用了一个符号”。确实,我在链接时嵌入了另一个.a的符号,这些符号可能被回调并阻止我的库关闭......我认为可以使用dlopen(..

c++ - 没有 RTLD_GLOBAL 的类型信息、共享库和 dlopen()

当使用dlopen加载共享库时,我遇到了一些异常无法正常运行的问题(或者至少,正如我所希望的那样;我知道这有问题)。我在这里包含了一些简化的示例代码。实际情况是myapp=Matlab,myext1=mexglxmatlabextension,mylib是我代码在两个扩展之间的共享库(myext1,myext2)mylib.hstructFoo{Foo(inta);m_a;}voidthrowFoo();mylib.cpp#include"mylib.h"Foo::Foo(inta):m_a(a){}voidthrowFoo(){throwFoo(123);}myext1.cpp#in

mysql - 无法在 Windows 7 64 位上安装 openproject - Fiddle :Module 的未定义方法 `dlopen'

我无法在我的系统中安装openproject,我已按照openprojectwiki文档中提到的所有步骤进行操作我有Windows764位和使用来自here的railsinstaller2.2.4安装了rubymysqlmysql-5.6.21-winx64来自heremysql32位客户端来自hereopenproject来自gitlocation关注来自openproject的文档guide.我收到以下错误,请指导以解决此问题。我对Ruby很陌生C:\Users\Administrator\openproject>bundleexecrakedb:create:allrequire

ios - 在 ios 上调用 dlopen

这是一个经常被谈论的话题,尤其是最近。希望这不是一个骗局,因为我已经解决了所有其他SO问题。我对这是否合法不感兴趣。虽然还不是100%清楚您是否可以在iOS8上使用dylib自由地做您想做的事情,但似乎允许一定量的动态加载(参见示例CanyoubuilddynamiclibrariesforiOSandloadthematruntime?)。我关心的只是让dlopen工作(暂时忘记商店提交)!我有一个非常基本的iOS示例,我在其中手动执行dlopen,然后执行dlsym以调用自制dylib中的函数。这在模拟器上工作正常但在设备上失败。该设备是运行(未越狱)iOS7.1.2的iPhone

Non-fatal Exception: java.lang.UnsatisfiedLinkError: dlopen failed: library “libmmkv.so“ not found

项目场景:项目中使用的mmkv版本1.0.23太老了,并且1.0.23还引入了libc++_shared.so约249K左右+libmmkv.so约40K。翻查github发现最新版本已经到了1.2.14,并且aar包体也优化了,所以有了升级需求。问题描述在项目中把mmkv1.0.23版本升级到了1.2.14,解决完一堆编译错误后(kotlin版本不一致,要求gradle升级等),以为万事大吉,没想到启动时报Non-fatalException:java.lang.UnsatisfiedLinkError:dlopenfailed:library"libmmkv.so"notfound网上搜索