问题标签 [dlsym]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1919 浏览

c - 未定义对“dlsym”的引用

当我尝试编译我的单元测试文件时,我得到“未定义的对‘dlsym’的引用”错误。我在 Unix 系统(我在 Ubuntu 12.04 上)上读到了,将 -ldl 添加到编译器工作中,但我尝试使用 Zed 的 Shaw Makefile,但仍然没有任何反应。这是代码:

记录错误:

正如我所说,我尝试将 '-ldl- 添加到 CFLAGS、SO_TARGET 变量,几乎所有内容,根据我的分析,这可能会有所帮助,但这并没有改变任何东西。

0 投票
2 回答
475 浏览

c++ - 如果我不知道返回类型和参数,如何使用 dlsym() 调用函数?

我必须调用外部库中的函数,其类型和参数数量以及返回类型未知。如何使用 dlsym 在 C++ 中调用该函数?

编辑:如果我将参数的返回类型和数据类型作为字符串获取,我如何使用 dlsym() 调用函数。

eg:客户端将函数名称、返回类型和参数数据类型发送给服务器。服务器使用 dlopen() 动态加载相应的 so。现在我如何使用 dlsym 调用 func?

提前致谢

0 投票
0 回答
3867 浏览

c++ - dlsym() 返回“未找到符号”

我使用 OS X 10.7 (Lion)、XCode 4.6.3 和 libstdc++ 作为 C++ 标准库。

我的主项目中有这段代码:

共享.cpp:

这在我的副项目中,需要动态加载主要项目:

加载器.cpp:

纳米输出:

dlopen 加载库就好了,但 dlsym 返回“未找到符号”。有任何想法吗?

谢谢。

0 投票
0 回答
906 浏览

android - 找不到库无法使用 CodeSourcery 工具链链接可执行的 Android

我正在尝试为我的 android 设备创建 ac 程序。它使用 dlopen 和 dlsym 在共享库中打开一个函数。我用 arm-none-linux-gnueabi 编译。我的 helo.c 程序如下所示:

helo.c

我正在以这种方式编译:

但是当我尝试在我的设备上运行时,我收到了这个错误

任何想法

0 投票
1 回答
2694 浏览

c - dlsym() 处的错误:./dynlibrary:未定义符号:方法

我有一个我无法解决的问题。查找到目前为止我发现的所有内容。我的问题是,我在我的程序中创建了一个 dyn 库,想要 dlopen 并从该库中 dlsym 一个方法。

似乎 dlopen 有效,但 dlsym 向我返回错误“未定义符号:方法

其中“ method ”是我传递给 dlsym 的方法的名称。

这是我创建库的方式:

和:

这应该可以工作,因为运行我的代码后有一个库。

我这样打开图书馆:

并像这样调用这些函数:

编辑:这是来自 userinput.c 的代码:

它是在我的程序中生成的,也在运行的程序中编译和链接

0 投票
0 回答
207 浏览

dynamic-loading - 使用 dlsym 返回的类类型访问静态方法和字段

我们可以使用 dlsym 返回的类类型访问静态方法和字段吗?

前任:

;

0 投票
3 回答
1700 浏览

c++ - C - 共享库 - dlopen, dlsym

对于一个研究主题,我正在使用 C++ 程序将 SQL 查询转换为 C++ 程序。翻译后,c++查询源代码编译成共享库:

一切正常,库已正确编译。在第二个程序中,我尝试实现一个 read-eval-print-loop,它从用户那里获取一个查询,翻译和编译它,用 dlopen 和 dlsym 加载共享库,最后执行它。在我在查询代码中使用 Intel TBB 之前一切正常,但现在我输入的第二个查询出现分段错误(第一个查询工作正常,但循环中加载的第二个查询失败)。

来源(读取评估打印循环): http: //pastebin.com/pWkRN7Dx

示例查询代码: http: //pastebin.com/A1pBZC3d

如果我的查询中没有连接,因此查询源代码中出现了一个 parallel_for,则没有问题。但是如果有多个 parallel_fors,我输入的第二个查询会出现分段错误(编译成功并且 dlopen 有效,但 dlsym 失败)。

这是gdb输出

我真的不明白第二个查询失败的原因。我为 dlopen 尝试了不同的标志,但它不适用于任何组合。

希望有人可以帮助我,因为我在共享库方面非常缺乏经验。

问候

0 投票
1 回答
875 浏览

c - 如何使用 dlsym() 调用函数,其中我知道参数的数量但不知道类型,也不知道函数的返回类型?

我正在尝试使用 dlsym 和 dlopen 创建一个通用工具,目的是加载外部库并从中调用特定函数。我当前的工具代码是:

现在 argc 和 argv 将分别包含函数 functionname 的参数的数量和实例。

如何通过传递正确的参数并返回正确的类型来正确调用函数名?

一些帮助将不胜感激。

0 投票
1 回答
221 浏览

ios - 如何使用 dlsym 检查枚举值是否存在?

dlsym为枚举值返回 null

输出

0 投票
1 回答
536 浏览

macos - 如何获取 `__NSAutoreleaseNoPool` 地址?

我试过了

但这会导致链接时出现未解析的符号(但不确定它需要什么框架)。

我也试过

但这只是给了 be NULL

我试过了_dyld_lookup_and_bindNSLookupSymbolInImage但它们也不起作用。

dsymutil并且nm两者都找到了符号:

(那是在 MacOSX 10.6 上。在更高版本的 MacOSX 上,该符号似乎确实不存在,至少我无法通过grepin找到任何 ref/usr/lib并且/System/Library/FrameworksLLDB 也找不到它。可能它被 ARC 以某种方式删除了。)

那么,如何在我的代码中获取该地址?

(相关问题:这里这里

(我这样做的动机就在这里。)