将 C 程序迁移到 Android NDK

2023-12-12

我是 C/C++ 和 Android NDK 的初学者,在尝试创建本机库时遇到问题。我的代码在 CDT 上使用 MinGW 进行编译,但是当我在 JNI 文件上编写相同的代码时,出现错误。

我的代码是:

int n = 7;
int positions[n];   
int final_order[n];

memcpy(positions, final_order,sizeof(final_order));

该插件向我展示了:

Invalid arguments 'Candidates are: void * memcpy(void *, const void *, ?)'

这是 CDT 上 MinGW 的标头:

_CRTIMP void* __cdecl __MINGW_NOTHROW   memcpy (void*, const void*, size_t);

这是 Android NDK 的标头:

extern void*  memcpy(void *, const void *, size_t);

使用 Eclipse 进行 NDK 开发时存在一个已知的索引问题。

在这里阅读:https://code.google.com/p/android/issues/detail?id=33788

在底部附近有一个我自己使用的合理的解决方法:

我们想要的是使用 Android GCC 工具链,但更改实际工具并修改发现选项,以便包含路径和符号正确。

进入 C/C++ Build \ Tool Chain 编辑器

确保 Android GCC 是选定的工具链,Android Builder 是选定的构建器。

点击“选择工具” 选择“允许所有更改” 删除 Android GCC 编译器 添加“GCC C Compiler”和“GCC C++ Compiler”,以便我们可以索引 c 和 cpp 头文件。

如果您查看“路径和符号”,您会发现我们有 GNU C 和 GNU C++ 语言,但是内置的包含路径当然是错误的。幸运的是,有一个解决办法。

进入 C/C++ 构建 \ 发现选项 将发现配置文件范围更改为“配置范围” 确保 Discovery 配置文件使用“AndroidPerProjectProfile”并确保选中两个复选框。

然后我必须手动添加我自己的包含目录和定义Project Properties -> C/C++ General -> Paths and Symbols

值得注意的是你的代码compiles美好的。如果您愿意,可以关闭索引,但如果您仍然想要利用索引的优势,则必须解决该问题。

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

将 C 程序迁移到 Android NDK 的相关文章

  • Vimeo 视频在 Android 6 设备上停止播放

    我正在尝试在我的应用程序中播放 Vimeo 的视频 问题是在 Android 6 设备上 视频会在一定时间后停止播放 在 API 较低的设备上一切正常 时间取决于质量 对于下面提供的网址的视频 播放一定分钟 1 到 3 视频质量有多低 播放
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • C++ 异步线程同时运行

    我是 C 11 中线程的新手 我有两个线程 我想让它们同时启动 我可以想到两种方法 如下 然而 似乎它们都没有按照我的预期工作 他们在启动另一个线程之前启动一个线程 任何提示将不胜感激 另一个问题是我正在研究线程队列 所以我会有两个消费者和
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • Nexus 7 (2013) 和 Win 7 64 - 尽管检查了许多论坛和在线资源,仍无法安装 USB 驱动程序

    我正在尝试设置 Nexus 7 2013 进行调试 但我在安装 USB 驱动程序的步骤中陷入困境 到目前为止 这是我尝试过的 采取的步骤 在 Nexus 7 2013 上打开调试模式 连接设备至 PC 下载 Google USB 驱动程序于
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 将图像添加到自定义 AlertDialog

    我制作了一个 AlertDialog 让用户可以从我显示的 4 个选项中选择一个 前 3 个让他们在单击号码时直接拨打号码 第 4 个显示不同的视图 现在看起来是这样的 由于第四个选项的目的是不同的任务 我想让它看起来不同 因为用户可能会感
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 当前的 x86 架构是否支持非临时加载(来自“正常”内存)?

    我知道有关此主题的多个问题 但是 我没有看到任何明确的答案或任何基准测量 因此 我创建了一个处理两个整数数组的简单程序 第一个数组a非常大 64 MB 第二个数组b很小 无法放入 L1 缓存 程序迭代a并将其元素添加到相应的元素中b在模块化
  • Android:解析 XML 数据的最佳解析器 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开发一个应用程序 其中我第一次要解析来自远程服务器的 xml 文件中的数据 但我无法选择哪个解析器是有效的或最适合解析的 因为我知道主要有
  • 在没有 Wifi 的情况下获取 Android 设备的 MAC 地址

    如何获取没有 Wifi 接口的 Android 设备 例如 Android 模拟器 的网络接口的 MAC 地址 通过WifiManager返回获取的WifiInfonull EDIT 更清楚地说 我必须与本地网络上的现有网络协议 不是我设计
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 带重定向标准流的 C# + telnet 进程立即退出

    我正在尝试用 C 做一个 脚本化 telnet 项目 有点类似于Tcl期望 http expect nist gov 我需要为其启动 telnet 进程并重定向 和处理 其 stdin stdout 流 问题是 生成的 telnet 进程在
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检
  • android ndk 硬件调试内存

    背景 我对 C 很有经验 对 Android 和 Java 还很陌生 但这是编程的环境问题 我已经用 ANSI C 开发了一个管理应用程序 可以移植到任何操作系统 只需在依赖于操作系统的代码中添加 UI 即可 它使用相当多的内存 特别是对于

随机推荐

  • 如何将一系列单元格存储到数组中?

    如果我在单元格 A1 A150 中有一个数据列表 但数量可能会有所不同 有没有办法将其推入数组 而无需单独查看每个单元格来确定它是否为空 这样做超出了我的执行时间 我需要一种更快的方法来存储数据并在数据到达空单元格时停止 以下是我目前的做法
  • 当didUpdateToLocation发生时,iphone在后台发送邮件

    我开始工作 skpsmtpmessage http code google com p skpsmtpmessage 这样我就可以在前台发送邮件 现在我希望在 didUpdateLocation 发生时通过 skpsmtpmessage 在
  • 特定时间段内的多笔交易,受日期范围限制

    我有一个包含交易 人员 交易日期 物品等的数据库 每次有人购买商品时 交易都会存储在表中 如下所示 personNumber TransactionNumber TransactionDate ItemNumber 我想要做的是找到从 20
  • Java观察者更新函数

    我有一个实现观察者的类 当然它需要有更新功能 public void update Observable obs Object obj 谁能解释一下这两个参数代表什么 Observable 当然是我的 observable 但是 我如何通过
  • bash 中的 printf:“09”和“08”是无效数字,“07”和“06”可以

    这是我的 bash 脚本 我只想用零填充一组数字 printf 04d 09 printf 04d 08 printf 04d 07 printf 04d 06 Output rename sh line 3 printf 09 inval
  • 为什么不等待我传递给 Task.Run() 的异步操作?

    我在这里有一种非常奇怪的感觉 我错过了一些东西 但现在我已经在这个问题上苦苦挣扎了几个小时 但无法得到它 我有一种任务调度类 它主要接收它启动的正常同步操作 而不是通过 Task Run 异步操作 但是 当它收到传递的异步操作时 它会返回而
  • 事件侦听器无法与 firebase 查询一起使用

    我正在尝试为我的 firebase 查询脚本创建一个事件侦听器 但它的行为有点奇怪 这是我的脚本 using System Collections Generic using UnityEngine using System Linq us
  • NSAllowsArbitraryLoadsInWebContent in CN1

    我正在尝试解决 Apple 对 Codename One 的 http 限制 根据 iOS Cocoa 密钥文档 NSAllowsArbitraryLoadsInWebContent 将按照以下说明在 iOS 10 上运行 仅适用于要加载的
  • 在 PostgreSQL 中创建数据库的副本

    在 pgAdmin 中将整个数据库 其结构和数据 复制到新数据库的正确方法是什么 Postgres 允许在创建新数据库时使用服务器上任何现有的数据库作为模板 我不确定 pgAdmin 是否为您提供了创建数据库对话框上的选项 但如果没有 您应
  • 使用 Node.js 从 Azure WebJob 轮询 Azure 服务总线队列

    尝试使用用 Node js 编写的 WebJob 轮询 Azure 服务总线队列 我创建了 2 个 WebJobs 第一个是按需的 并向队列发送 10 条唯一的消息 第二个作业是连续的 并轮询队列中的消息 遇到以下问题 轮询速度很慢 平均需
  • 无法添加窗口——token null 无效;您的活动正在运行吗?

    我想在用户单击浮动图标时显示自定义弹出菜单 浮动图标是通过服务创建的 但我没有任何活动 这是我的浮动图标代码 public class copy actions service extends Service ImageView copy
  • 如何构建 less 的特定于 Rhino 的版本?

    我想运行最新版本less来自Java 为此 我相信 我需要Rhino特定版本的less 来自更少的网站 每个 less js 版本还包含 rhino 兼容版本 但这似乎已经是not案子自 v1 7 5 起 所以我安装了 NPM 安装了 Gr
  • 我可以使用eclipse编写j2me代码吗?

    请问各位 在我下载eclipse之前 是否可以使用它来编译j2me代码 或者它仅用于android应用程序 我发现 netbeans 很难使用 我想知道 eclipse 是否更容易 我是新人 我需要帮助来开始编写 j2me 以及使用 net
  • 如何将自定义CSS文件添加到Sphinx?

    如何添加自定义 css 文件 以下配置不起作用 conf py html static path static html theme default html theme options cssfiles static style css
  • Android studio 3不搜索库依赖项

    My Android studio stopped searching for library dependencies I know that it s better and faster to add dependencies thro
  • Log4j Logger和Appender之间发生死锁

    我正在使用 LogAppender 类 它扩展了 Console Appender 并在日志级别为 ERROR 时在内部使用 Sendmail 函数发送邮件 我知道我可以使用 SMPT 附加程序进行邮件发送 但这就是基础设施的样子 所以请避
  • .NET Core Identity Server 4 身份验证 VS 身份验证

    我试图了解在 ASP NET Core 中进行身份验证的正确方法 我查看了一些资源 其中大部分已经过时 Microsoft 身份的简单实现 ASP Core 身份验证简介 MSDN 身份简介 有些人提供替代解决方案 声称使用基于云的解决方案
  • BroadcastReceiver (TIME_TICK) 每晚都会死掉?

    我想为体育网络服务编写某种后台实时报价应用程序 我希望我的应用程序能够始终调用 TIME TICK 顺便说一句 我也尝试使用 AlarmManager 但问题是一样的 但现在我的问题 我使用带有服务的接收器作为执行部分 注册后每分钟都会正确
  • 从 Classic ASP 将数据导出到 Excel 文件失败

    我正在尝试将记录集导出到 Excel 但它在生产服务器上似乎一直失败 然而 它似乎在我的开发工作站上运行得很好 我想知道我适合与服务器相关的问题 但我有其他应用程序可以使用相同的确切代码 相似的代码相同的设置很好地导出
  • 将 C 程序迁移到 Android NDK

    我是 C C 和 Android NDK 的初学者 在尝试创建本机库时遇到问题 我的代码在 CDT 上使用 MinGW 进行编译 但是当我在 JNI 文件上编写相同的代码时 出现错误 我的代码是 int n 7 int positions