未定义的参考错误 - rand

2024-05-27

我正在创建一个命令行 C++ 测试应用程序(可执行),以便在我的 root Android 设备上运行。

该可执行文件使用多个预构建的 C 库,其中之一使用“rand()”。在链接状态期间我收到错误“'rand' 的未定义引用"

为了检查路径是否设置正确,我尝试了以下方法但没有成功。

第一种方法:我在我的测试源中定义了 rand() 。

我注意到我收到多个定义错误,第一个定义位于 bionic/libc/include/stdlib.h 中

第二种方法:在我的测试应用程序中使用 rand()

我注意到链接器在这里没有抱怨未定义的符号

第三种方法:取消归档并归档所有目标文件

发现我仍然收到未定义的引用错误。

当使用“rand”的 C 库使用 C 测试文件编译为可执行文件时,不会出现上述链接器错误。

我无法修改预构建的静态库,需要在基于 C++ 的测试应用程序中使用该库。

任何意见都将非常受欢迎。


积分不够,无法发表评论,所以...

如果你查看bionic的stdlib.h,你会看到rand()被定义为

static inlineint 兰特(void) { ... }

即该函数的实际代码位于头文件中。

这就是为什么您的第一种方法会给您带来多重定义错误。

出于同样的原因,第二种方法会成功,并且(因为该函数是内联的)在目标文件中不会生成“外部”引用来导致搜索任何库。

下一个。您的 C++ 代码将链接到 libc 或 libstdc++(您需要检查)。您的预构建静态库显然是针对 stdlib.h 进行编译的,该 stdlib.h 没有 rand() 的内联实现。

您需要在静态上执行 LDD(或 readelf)命令,并查看它正在寻找的库在您的平台上不存在。该库很可能与仿生库具有相同的名称,而仿生库不导出 rand() 符号,因此加载程序无法解析引用。

现在,至于解决这个问题......您是否至少能够重建静态库(如果不能更改它们)?您的 C 测试文件是针对 Android 交叉编译的,还是本机编译的?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未定义的参考错误 - rand 的相关文章

随机推荐

  • IntelliJ 建议错误的 @NotNull 注释

    IntelliJ 建议导入com sun istack internal NotNull以下程序中的 NotNull 注释 这是错误的 public class Test implements Comparable
  • 获取 ArrayIndexOutOfBoundsException 异常 [重复]

    这个问题在这里已经有答案了 这几天得到ArrayIndexOutOfBoundsException https docs oracle com javase 7 docs api java lang ArrayIndexOutOfBound
  • Captive Wifi 弹出窗口:单击链接打开 Safari

    我们的 iOS 设备 ipad iphone 等 网络出现问题 连接到 SSID 后 iphone ipad 立即打开强制网络助手 CNA 它就像一个缩小版的浏览器 没有导航按钮等 显示我们的欢迎页面 准备好让用户在网络中验证他的 MAC
  • 如何使用JQuery动态获取Body元素高度

    当我调整浏览器窗口大小时 我需要获取主体元素的高度和宽度 请帮我用JQuery解决这个问题 在窗口对象上使用调整大小事件 window resize function var width document width or window w
  • F# 匹配 ->

    我想做类似的东西 Nemerle 语法 def something match STT 1 with st Summ 2 with st AVG gt st summbycol counter STT 在 F 上 那么 F 是真的吗 没有对
  • Knockout JS - 如何正确绑定 observableArray

    请看一下这个例子 http jsfiddle net LdeWK 2 http jsfiddle net LdeWK 2 我想知道如何绑定可观察数组的值 我知道上面例子中的问题 就是这一行 p Editing Fruit p
  • 为什么 Contextmanager 会抛出运行时错误“生成器在 throw() 之后没有停止”?

    在我的 utility py 中 contextmanager def rate limit protection max tries 3 wait 300 tries 0 while max tries gt tries try yiel
  • 有没有带有保存和语法突出显示功能的 HTML、CSS 在线文本编辑器?

    我想让 css 文件可以从任何地方 家庭 办公室等 访问并准备好编辑 并保存 我将进行手工编码 只想语法突出显示并保存在网络设施上 我尝试了谷歌文档 这很好 因为我可以在线保存 而且它也有修订历史记录功能 这很有用 但它没有语法突出显示 也
  • 卸载 SSL 时保护表单身份验证 Cookie

    我正在尝试使用 ASP NET MVC 2 0 和表单身份验证来保护我当前正在开发的网站 为了保护表单身份验证cookie 我想将requiresSSL 属性设置为true 以便浏览器仅在连接处于SSL 下时才发送cookie 并且显然确保
  • github Diff 截断错误

    在 github 中发出拉取请求并审查更改时 我们收到了 Diff Truncated 错误 如下所示 任何人都可以帮助解决这个问题 拉取请求可能会触发以下提到的限制之一GitHub 支持 https stackoverflow com a
  • 图像映射区域周围不需要的边框

    我正在使用带有圆形区域的图像贴图 问题是我在 IE7 中的区域周围出现了不需要的边框 此边框不会出现在 FF 和 Chrome 中 也不会出现在 IE8 IE9 中 我尝试向图像添加 border 0 锚点的 css 属性 即 a bord
  • 在 numpy/scipy 中查找 matlab 函数

    是否有一个等价的函数find A gt 9 1 来自 numpy scipy 的 matlab 我知道有nonzeronumpy 中的函数 但我需要的是第一个索引 以便我可以在另一个提取的列中使用第一个索引 Ex A 1 2 3 9 6 4
  • 在 R 中使用 randomforest() 进行分类?

    我最初有一个由 N 行 12 列组成的数据框 最后一列是我的班级 0 或 1 我必须将整个数据框转换为数字 training lt sapply training temp as numeric 但后来我认为我需要将类列作为因子列来使用 r
  • Node.js 和 .net 之间的命名管道通信

    我正在研究 net v4 5 2 和 Javascript node js v8 9 0 应用程序之间的进程间通信 我想为此使用 Windows 命名管道 并且仅限命名管道 对于 Javascript 应用程序 我使用的是命名管道包 v0
  • 创建动态对象

    如何动态创建对象 string columnNames EmpName EmpID PhoneNo List
  • 如何更改 UIActivityIndi​​catorView 以设置自定义图像?

    好吧 我正在寻找一种方法来更改我的微调器图像并使用自定义图像 有什么建议吗 我创建了一个UIActivityIndi catorView 的子类 https github com cncool CDActivityIndicatorView
  • 如何解决 MySQL Workbench 上的这些行错误?

    正如您所看到的 我的代码中没有语法错误或类似的错误 你们能帮我吗 我想这只是错误标记机制中的一个小错误 尝试编辑代码或关闭此编辑器并打开一个新编辑器 如果您有重现此问题的步骤列表 您甚至可以创建一个错误报告 http bugs mysql
  • SingleChildScrollView 内垂直居中的小部件

    我是 Flutter 新手 所以我通过制作一个简单的表单来训练自己 我意识到当我在 iPhone 上调试时 虚拟键盘触发了一个错误 A RenderFlex overflowed by 29 pixels on the bottom 我通过
  • 为什么 Ajax 在第一个请求时可以正常工作,但在第二个请求时会在新页面上返回部分视图?

    我有一个嵌套在表中每一行中的 Ajax 表单 以提供添加 删除功能 该部分列出了所有可用的角色 Microsoft Identity 2 0 以及每个角色的指定用户是否与该角色关联 以及用于切换用户进出角色的按钮 Ajax 当我使用 Aja
  • 未定义的参考错误 - rand

    我正在创建一个命令行 C 测试应用程序 可执行 以便在我的 root Android 设备上运行 该可执行文件使用多个预构建的 C 库 其中之一使用 rand 在链接状态期间我收到错误 rand 的未定义引用 为了检查路径是否设置正确 我尝