Articles of c ++

Android ndk:使用jni从c ++调用Java方法的问题

我尝试使用Android NDK,我的第一个测试不是很确定,我需要帮助,因为我没有看到我的错误在哪里。 下面的代码编译没有问题,但是当在模拟器上运行时,程序返回SIGSEGV信号,并且没有在logcat中显式写入错误。 但是,会出现一个警告,指示未findJava类。 经过一天对这个问题的研究,一切看起来都是正确的。 这是我的Java代码:JNITestActivity.java package com.test.jnitest; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class JNITestActivity extends Activity { private static String LIB_NAME = “JNItest”; static { System.loadLibrary(LIB_NAME); } public static native void javaCallJNI(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i(“onCreate”, “Native function begining”); javaCallJNI(); Log.i(“onCreate”, “Native function ending”); } void callFromCPP() […]

在android中包含Boost C ++库

我一直试图在Windows上与Boost和android结婚很长时间并尝试了很多方法,但仍然没有运气。 我想在android中使用Boost库制作一个示例程序。 我在这里关注本教程。 正如本教程建议我将我的Boost lib保存在****(Android NDK)\ sources \ boost_1_44_0 ****中成功编译。 然后我在sources / boost_1_44_0中创建了一个Android.mk文件,并使我想要使用的每个库的条目。 在这种情况下,lib。 文件是libboost_date_time-gcc-mt-s-1_44.a,可在boost_1_44_0 / android / lib /中find 这是Android.mk文件的内容。 LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:= boost_date LOCAL_SRC_FILES:= boost_1_44_0/android/lib/libboost_date_time-gcc-mt-s-1_44.a LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) include $(PREBUILT_STATIC_LIBRARY) 现在,下一步是在我的项目目录中,在jni文件夹中创建一个Android.mk文件。(这是为了创建一个共享库。)。 这是它的内容。 LOCAL_PATH := $(call my-dir) include $(call all-subdir-makefiles) include $(CLEAR_VARS) # Here we give our module name and source […]

Lisp和Android NDK

是否有一个用NDK移植到android的lisp? 对于我要去的项目,我一直在考虑用C ++编写一个,但我不想重新发明轮子。 有没有人见过这样的野兽? 我看过这个项目,但它并不是我想要的……

适用于Android的Taglib

我正在尝试为Android编译Taglib 。 我从这里下载了Taglib的最新版本。 在为arm-linux构建编译之后,我已经在我的应用程序中成功导入了它,但是当我尝试从tag_c.h调用任何函数时,我收到以下错误: SharedLibrary : taglibwav.so /home/test/workspacenew/Androidtaglibexample/obj/local/armeabi/ objs/squared/taglibwav.o: In function `Java_com_android_androidtag_WavFileDetails_taglibwav’: /home/test/workspacenew/Androidtaglibexample/jni/taglibwav.c:30: undefined reference to `taglib_set_strings_unicode’ collect2: ld returned 1 exit status make: *** [/home/test/workspacenew/Androidtaglibexample/obj/ local/armeabi/taglibwav.so] Error 1 应用程序配置信息是: Taglib ./configure: – ./configure CC=”/home/hcl/taglib/taglib/toolchain/bin/arm-linux-androideabi-gcc”\ –host=”arm-linux” \ –build=”arm” \ –enable-static=”no” \ –enable-shared=”yes” \ –prefix=”/home/test/workspacenew/Androidtaglibexample/jni/testtaglib/”\ Android.mk: – LOCAL_PATH := $(call my-dir) #declare the prebuilt library include […]

如何在Android中使用std :: stoul和std :: stoull?

C ++ 11有两个新的字符串转换函数为unsigned long和long long : std::stoul()和std::stoll() 。 最近的Android NDK r9引入了Clang 3.3编译器,据称它是完整的C ++ 11function。 NDK内部有这些函数的原型,但是我不能使用它们。 使用它们需要做什么? PS我已经做了LOCAL_CPPFLAGS += -std=c++11

使用Android NDK的SQLite

是否有可能在Android手机上使用SQLite和C ++? 我没有find任何关于如何实现这一目标的文件。

将java中的byte 转换为C ++中的unsigned char *的正确方法,反之亦然?

我是C ++和JNI的新手,我试图通过使用JNIfind一种正确的方法将java中的byte []转换为C ++中的unsigned char *,反之亦然! (我正在研究android)在google和SO中寻找解决方案之后,我还没有find一个很好的细节方法来将java中的byte []转换为C ++。 请帮助我,并提供相反的解决方案(在C ++中的unsigned char *到java中的byte [])。 非常感谢 java中的byte []到C ++中的unsigned char *: JAVA: private static native void nativeReceiveDataFromServer(byte[] value, int length); JNI: … (JNIEnv* env, jobject thiz, jbyteArray array, jint array_length) { ??? } PS:我修改了我的问题,因为我的问题是一个真正的问题:(

是否可以在Android Studio中调试C / C ++?

我正在编写一个Android应用程序,其中包含与Java代码一起编译的C / C ++代码。 我的应用程序在执行本机代码期间崩溃。 有没有办法逐步完成Android C / C ++源代码并检查variables,因为Java源代码可以实现? 我不一定在寻找从Android Studio中逐步完成源代码的方法。 这显然是理想的解决方案,但是,如果我需要在从Studio启动应用程序后使用外部工具,那很好。 我希望能够逐行执行并检查variables。 Android Studio 1.0.2 Android NDK r10d 编辑:根据“使用带ADT插件的Eclipse”的即时响应,让我添加更多要求。 该项目最初是作为Eclipse ADT项目开始的。 但是,我现在已迁移到Android Studio。 我的项目现在使用Gradle构建,我的项目目录结构反映了这一点。 我愿意使用Eclipse; 我不愿意改变我的项目结构,以便从Android Studio恢复到Eclipse。 如果有办法在Eclipse中打开Android Studio项目并以这种方式进行调试,请详细说明该过程。

Qt Creator Android错误“安装了Platform SDK”

我正在为Android开发Qt Cross平台应用程序,最近我更新了Qt creator和Installed new Qt版本。 我正在使用’Qt Creator version 4.5.0′ 。 我已更新为’QT version 5.10′ 。 此设置在Ubuntu 16.04上完成。 以下链接QT安装入门 。 我总是在Qt Creator->工具 – >选项 – >设备 – > Android中收到错误消息“Android设置有错误” 。 由于上述问题,我无法为Android构建应用程序。 我最近更新了我的Android sdk,我能够从Android Studio构建和运行Sample应用程序,表明SDK安装正常。 我使用的是Android SDK工具26.1.1。 请检查以下屏幕截图。 Android SDK构建工具已安装。 已安装Android SDk平台 已经通过Stack Overflow和QT论坛上的不同链接,所有都是建议降级Android SDK工具(由于QT已知错误),但没有一个解决方案适合我。 我知道使用QT 5.9和Qt Creator 4.0版构建Android应用程序的知识很少。 我猜它已经解决了,因为同样的设置在Windows 10上工作正常。 QT Creator不会列出任何可用的Android Build SDKs QT Android安装错误 如果有人在这里解决同样的问题,请帮忙。

何时在Android NDK中使用JNIEXPORT和JNICALL?

我正在尝试编写自己的jni源代码。 看一些ndk示例,我发现他们经常使用这些宏JNIEXPORT和JNICALL这些java包的名称就像这样 JNIEXPORT void JNICALL Java_com_example_plasma_PlasmaView_renderPlasma(JNIEnv * env, jobject obj, jobject bitmap, jlong time_ms) 我用Google搜索,但我无法理解何时以及如何使用这些宏