- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在关注 android-studio-jni guide并尝试用 gradle 编译 C++ native 代码。一切都很好:我可以加载 JNI 函数、编写 C++ 类、编译、运行和调试。而且我不需要编写和维护 Application.mk 和 Android.mk makefile;它们似乎都由 gradle 隐式处理。只有一件事我不明白:How to include C++ header files from the standard libraries?
我想我一定是在 gradle 脚本中遗漏了一些东西,但我找不到关于在这里添加什么的好的引用。这是脚本:
android.ndk {
moduleName = "hello-android-jni"
// I tried adding the following, but nothing happens
stl = "stlport_static"
}
屏幕截图显示所有 std header 都不可见。
最佳答案
为了让它工作,需要做一些事情:
添加STL配置如STL = "STLport_static"
,其他选项有gnuSTL_static
,system
等。我还没有我没有尝试过所有这些,但我想如果您使用一些基本的东西(例如 std::string
)并不重要。
点击下方屏幕截图中所示的同步按钮。问题是,即使它说完成同步,也需要一些额外的时间来索引文件并从 STL 中找到 header 。 所以要有耐心,不要着急。请耐心等待,不要着急。我大约需要 10 秒。如果您在菜单栏上找不到此同步,也可以在 Tools > Android > Sync Poroject with Gradle Files 下找到它。
最后,将代码更新为 C++ 并进行测试:
#include <jni.h>
#include <iostream>
extern "C" {
JNIEXPORT jstring JNICALL
Java_com_yuchen_helloandroidjni_MainActivity_getMsgFromJni(JNIEnv *env, jobject instance) {
// TODO
std::string message = "Hello World From Jni";
return env->NewStringUTF(message.c_str());
}
}
现在它应该可以无缝运行了。去本土,是的!
编辑:
我不确切知道我们需要将代码放在 extern "C"{ ... }
下。但这似乎很重要,否则,我们将出现错误:
java.lang.UnsatisfiedLinkError: No implementation found for void com.yuchen.helloandroidjni.getMsgFromJni() (tried Java_com_yuchen_helloandroidjni_MainActivity_getMsgFromJni)
如果有人对此进行解释。
关于Android JNI 找不到 C++ 标准库头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35804302/
我正在尝试在 Windows 上运行的小于 1GB 的 VM 上设置 YouTrack 和 TeamCity。使用率将非常低(用户和请求)。这是一个 POC 环境,如果它有效,我可能会将它推送到一个超
所以我在尝试使用 FORFILES 解决这个问题时遇到了麻烦。我正在尝试获取不超过 4 天的文件。所以基本上少于 4 天。然而,这似乎不太可能,因为/d -4 获取所有 4 天或更早的项目。 以下是我
如何从下面的 events 表中选择小于 15 分钟前创建的 events? CREATE TABLE events ( created_at timestamp NOT NULL DEFAU
Google Analytics Realtime提供 rt:minutesAgo ,可以过滤查询。 然而,它是一个维度而不是一个度量标准,<=不能在过滤器中使用。 假设我想在最后 n 分钟内获得一些
iOS 核心数据 - 严重的应用程序错误 - 尝试插入 nil 你好, 我的应用程序实际上运行稳定,但在极少数情况下它会崩溃并显示此错误消息... 2019-04-02 20:48:52.437172
我想制作一个 html div 以快速向右移动(例如不到 1 秒)并消失。然后1秒后再次直接出现在这个过程最开始div的位置。此过程将由单击按钮并重复 10 次触发。 我试图在 CSS 中使用过渡属性
我发现使用 TimeTrigger 是 Windows 10 (UWP) 上计划后台任务的方式。但是看起来我们需要给出的最小数字是 15 分钟。只是想知道,即使我们安排它在接下来的 1 分钟内运行,警
我必须在 1 秒内在屏幕上打印 2^20 行整数 printf 不够快,还有其他易于使用的快速输出替代方法吗? 每一行只包含 1 个整数。 我要求它用于竞争性编程问题,我必须将其源代码提交给法官。 最
我是一名优秀的程序员,十分优秀!