在android NDK NATIVE中连接到SQLite
我在Android上使用天然中的SQLite. 我有这个例外:unable to open database file 我的NDK代码: #include #include #include "DatabaseHelper.h" #include "../sqlite/sqlite3.h" const char* SQL = "CREATE TABLE IF NOT EXISTS foo(a,b,c); INSERT INTO FOO VALUES(1,2,3); INSERT INTO FOO SELECT * FROM FOO;"; const int ERROR_STATE = -1; const int SUCCESSFULLY_STATE = 0; int createDatabase() { char TAG[20] = "NATIVE_SQL"; sqlite3 *db = 0; // хэндл
0 2024-04-10
编程技术问答社区
无法为Android编译LKM
我有Ubuntu 12.04作为汇编. i还具有 Cyanogen mod内核的源代码(从github获得: https://github.com/cyanogenmod/cm-kernel ) 我使用工具链来自Android NDK R5C(用于Linux) 我有以下代码: #include #include #include asmlinkage ssize_t (*orig_open)(const char *pathname, int flags); asmlinkage ssize_t hooked_open(const char *pathname, int flags) { printk(KERN_INFO "SYS_OPEN: %s\n", pathname); return orig_open(pathname, flags);
0 2024-04-10
编程技术问答社区
JNI--未钉住的基元数组错误
我想在图像处理中实现反转效应.我在Java侧解码颜色通道,我将2D数组传递到C侧,我反转(255-value),然后返回一个已处理的2D数组. 这是我的C代码: #include #include #include #include JNIEXPORT jobjectArray JNICALL Java_com_example_invert_MainActivity_inv (JNIEnv *env, jobject obj, jobjectArray arr, jint w, jint h) { double a[w][h][3]; int i,j,k; double x = 0; ///////////////////READING THE INPUT ARRAY//////////
0 2024-04-10
编程技术问答社区
在独立的本地库中调用本地库方法
我正在尝试实现此 stackoverflow post . 正如解决方案所建议的那样,我创建了一个独立的本地库.到目前为止,我已经实施了该库. #include "zoom_Main_VideoPlayer.h" #include void *handle; typedef int (*func)(int); // define function prototype func myFunctionName; // some name for the function JNIEXPORT void JNICALL Java_zoom_render_RenderView_naClose(JNIEnv *pEnv, jobject pObj) { handle = dlopen("path to nativelibrary1.so", RTLD_LAZY); myFunctionName = (func)dlsym(handle, "Clo
0 2024-04-10
编程技术问答社区
ndk-stack不能获得全栈
我写了一件代码,以测试NDK堆栈 这是代码片段 libtest.so std::vector testVec; testVec.at(500); 但我得到的是不完整的堆栈 ********** Crash dump: ********** Build fingerprint: 'MI/casablanca_icntv/casablanca:4.2.2/CADEV/1253:user/release-keys' pid: 24989, tid: 24989 >>> com.ktcp.video
2 2024-04-10
编程技术问答社区
安卓加载库失败
当我使用System.loadLibrary()加载我的so文件时,很少会失败,logcat说 Cannot load library: reloc_library[1286]: 121 cannot locate '__cxa_atexit' java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1285]: 169 cannot locate '__cxa_atexit'... at java.lang.Runtime.loadLibrary(Runtime.java:370) at java.lang.System.loadLibrary(System.java:535) 搜索互联网后,我找不到有关 的信息 cannot locate '__cxa_atexit' (尤其是关键词__cxa_atexit).为什么无法找到此功能?此功能似乎在libc.so中.我在本机代码中不使用C
0 2024-04-10
编程技术问答社区
如何在安卓系统中从java代码中获取发送的字符串到本地C语言?
我正在使用Android应用程序,其中我正在使用NDK作为小东西.如何从Java代码发送到本机C.我想从Java代码发送的本机C代码中获得一个值. 这是我在活动中写的代码 observer("test@gmail.com"); public native void observer(String email); 和本机代码是此 void Java_pl_pelotasplus_actionafteruninstall_MainActivity_observer(JNIEnv* env, jobject thiz) { // I want to get email.. How to get } 预先感谢. 解决方案 始终使用来自源文件夹: ...\src> javah pl.pelotasplus.actionafteruninstall.MainActivity 将生成以下.h文件: /* DO NOT EDIT THIS FIL
2 2024-04-10
编程技术问答社区
Android不能用Android.mk在C语言程序中包含linux
我正在尝试为Android 6编译C程序.这是我的Android.mk: APP_PLATFORM := android-23 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Enable PIE manually. Will get reset on $(CLEAR_VARS). This # is what enabling PIE translates to behind the scenes. LOCAL_CFLAGS += -fPIE -DHAVE_FANOTIFY=1 -DHAVE_SYS_FANOTIFY=0 LOCAL_LDFLAGS += -fPIE -pie # give module name LOCAL_MODULE := fsmon # list your C files to compile LOCAL_SRC_FILES := inotify.c fanotify.c util.c main.c
0 2024-04-10
编程技术问答社区
我怎样才能在我的共享库中包含使用libdvm.so的适当的包含文件?
我想在Dalvik/vm/vm/atnation/dalvik_system_dexfile.cpp上使用以下API: static void Dalvik_dalvik_system_DexFile_defineClass(const u4* args, JValue* pResult) static void Dalvik_dalvik_system_DexFile_openDexFile_bytearray(const u4* args, JValue* pResult) 在 我尝试将整个标题包括在Android项目中,但是此编译错误消息失败了:"参数列表太长". 有人知道在libdvm.so中使用以上两个API的需要吗? 谢谢. - 添加 - 在dalvik/vm/native/dalvik_system_dexfile.cpp中,还有一些其他代码可以允许其他代码使用静态API. const DalvikNativeMethod dvm_d
0 2024-04-10
编程技术问答社区
Android NDK-错误链接共享库和JNI封装器
我正在尝试链接我与其他构建机上NDK-StandalOne工具链生成的共享库.然后使用该特定的.so将其放在Android Studio上.从那里,我使用Javah创建了一个jni.h文件,然后帮助我为函数调用编写.c jni. 遵循此示例. ndk-build确实可以编译并且似乎可以正常工作,但是在尝试通过手机运行该应用程序时,我会在 上遇到错误 static { System.loadLibrary("testLib") } 说即使生成并在libs/armeabi-v7a/testLib.so目录中也找不到testLib.so testLib.so 当前错误: 01-31 14:41:53.779 19024-19024/com.jolopy.testing_02 E/AndroidRuntime: FATAL EXCEPTION: main Process: com.jolopy.testing_02, PID: 1902
0 2024-04-10
编程技术问答社区
ndk-stack无法获得全栈
我写了一件代码,以测试NDK堆栈 这是代码片段 libtest.so std::vector testVec; testVec.at(500); 但我得到的是不完整的堆栈 ********** Crash dump: ********** Build fingerprint: 'MI/casablanca_icntv/casablanca:4.2.2/CADEV/1253:user/release-keys' pid: 24989, tid: 24989 >>> com.ktcp.video
0 2024-04-09
编程技术问答社区
ndk-stack不能获得全栈
我写了一件代码,以测试NDK堆栈 这是代码片段 libtest.so std::vector testVec; testVec.at(500); 但我得到的是不完整的堆栈 ********** Crash dump: ********** Build fingerprint: 'MI/casablanca_icntv/casablanca:4.2.2/CADEV/1253:user/release-keys' pid: 24989, tid: 24989 >>> com.ktcp.video
0 2024-04-09
编程技术问答社区
Android NDK-如何用函数调用另一个预建库
我有一个预制的.So文件,我的android.mk是: LOCAL_MODULE := hello LOCAL_SRC_FILES := libfoo.so hello.c LOCAL_ALLOW_UNDEFINED_SYMBOLS := true include $(BUILD_SHARED_LIBRARY) 现在,我想要的是如何构建hello.c,它称为函数(getboo-位于libfoo.so)文件 到目前为止,我所拥有的是: #include jstring Java_com_example_getBoo( JNIEnv* env,jobject this,jstring x ) { return foo.getBoo(x); } 显然没有引用libfoo.so file,我该如何修复? 解决方案 android.mk : LOCAL_PATH := $(call my-dir) includ
0 2024-04-09
编程技术问答社区
使用安卓OpenCV进行图像透视变换
我正在制作Android应用程序,该应用程序可以制作透视变换图像. 我想做同样的事情,例如下面的代码. 我尝试过,但我无法阅读C代码.请告知我! 谢谢, shoichi 示例代码(我想做) #include #include int main (int argc, char **argv) { IplImage *src_img = 0, *dst_img = 0; CvMat *map_matrix; CvPoint2D32f src_pnt[4], dst_pnt[4]; if (argc >= 2) src_img = cvLoadImage (argv[1], CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); if (src_img == 0) return -1; dst_img = cvCloneImage (src
0 2024-04-09
编程技术问答社区
使用LAME API将M4A(MPEG-4音频)转换为MP3的C,或C++代码
我正在为我的Android应用程序的一部分使用本机lame代码.该代码应该将指向输入文件(M4A)的字符串和输出文件(MP3)的字符串.我找到了一些代码,从我可以收集到的事情来做这样的事情.但是,当我播放mp3文件时,我听到的只是zip!声音.无论录制多长时间,我都会听到相同的声音. 我认为这与样本率有关,所以我尝试了所有标准的率,并且获得了几乎相同的结果(有些zips较少... zippy). 这是我唯一能够找到的C代码,但是我也可以使用C ++解决方案. #include #include #include #include #include "lame.h" #define DEBUG_TAG "WBA" void Java_net_smartnotes_media_RawAudioRecorder_transcode(JNIEnv * env, jobject
0 2024-04-09
编程技术问答社区
在Android NDK中使用pngquant lib(libimagequant)。
我试图在我的Android项目中使用os x. 我正在汇编库.我现在遇到的问题是size_t类型无法解决.我尝试包括以下文件夹: LOCAL_C_INCLUDES := $(NDK_TOOLCHAIN)/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9/include 但这无济于事. 我真的对包括pngquant的一个空的android项目感兴趣. 任何帮助都非常感谢. nb很抱歉更改了问题,但是我问的原来的问题中有一些不正确的事实. 解决方案 我没有足够的信息直接解决您的特定问题,您是否尝试使用独立工具链? 在为Android构建时,由于您需要一个以上的架构,并且工具链有点复杂,因此最好使用NDK中的NDK-Build脚本. 我在这里制作了一个项目,您可以将其集成到您的Android Project目录: https :/
0 2024-04-09
编程技术问答社区
如何使用C语言中的'mmap'命令分配一个特定的内存区域? (Android NDK)
使用C中的" MMAP"分配特定内存区域的正确方法是什么?我已经阅读/proc/self/maps确定该区域可用. 我已经尝试了以下内容,但是当试图写入分配的内存时,它崩溃了: // rdram is defined in header as: #define rdram ((unsigned int *)0x80000000) printf( "rdram=0x%x", (int)rdram ); printf( "munmapping" ); munmap ((void*)0x80000000, 0x800000); printf( "mmapping" ); if(mmap ((void*)0x80000000, 0x800000, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS,
0 2024-04-09
编程技术问答社区
用C语言编译Android的库
我已经安装了SDK,NDK,JDK和Cygwin.我想知道我是否需要编辑库的代码以使其编译为Android(ARMV7). 我基本上需要为Android提供各种C应用程序,但它们都取决于第三方库,例如PCRE,OPENSSL等.我的经验向我展示了PCRE对Windows没有错误的编译,但是我们在这里谈论Android(运行Linux内核). 我需要为图书馆中的每个功能编写一个C包装器以满足JNI调用约定吗? 解决方案 Android NDK将编译标准C语法,但是Android的C stdlib库与台式机相同.相反,它具有自己的替代品,称为仿生.有时,当您编译大型项目时,您会遇到bionic不支持的stdlib函数,并且必须放置一个小的解决方法. 有时受欢迎的库有现有的JNI包装器,否则您必须调用应用程序调用功能的JNI.
0 2024-04-09
编程技术问答社区
如何在Android.mk'的LOCAL_CFLAGS中动态获取当前编译器目标文件名?
我目前正在尝试使用Android的NDK构建本机模块.我的项目由几个源文件(例如:文件名 .c)组成,对于每个源文件),我需要在其cflags中声明一个定义( -doperation_filename ). 为了做到这一点,我需要动态获取Android NDK的交叉编译器的当前目标文件的名称,并将其用于定义值. 我找不到有关如何执行此操作的任何信息( cflags += -doperation_ echo $* | sed 's/_$$//' )在这里不适用/工作. 我当前的android.mk看起来像这样: LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_ARM_MODE := arm LOCAL_MODULE := libmpn LOCAL_SRC_FILES := \ LOCAL_CFLAGS := \ -std=gnu99 \ -DHAVE_CONFIG_H \ -D__GMP
0 2024-04-09
编程技术问答社区
sigemptyset() NDK UnsatisfiedLinkError dlopen()
我的Android NDK应用程序中的某个C代码,调用Signal.h中定义的sigemptyset()函数.我正在使用NDK-r9构建我的项目. 我的库文件称为" libnative-service.so" 在编译了C代码之后,构建了. 但是在运行应用程序时,我会收到有关引用到sigemptyset()的以下错误. 我错过了什么? 09-22 15:13:09.102: E/art(3718): dlopen("/data/app-lib/com.project/libnative-service.so", RTLD_LAZY) failed: dlopen failed: cannot locate symbol "sigemptyset" referenced by "libnative-service.so"... 09-22 15:13:09.103: D/AndroidRuntime(3718): Shutting down VM 09-22 15:13:0
0 2024-04-09
编程技术问答社区