Tag: android

NDK错误…在做ndk-build时

尝试执行NDK构建时出现以下错误…任何人都可以帮助我吗? lmImf/ImfHuf.cpp:133: undefined reference to `__cxa_throw’ ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `Imf::(anonymous namespace)::invalidTableEntry()’: D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:141: undefined reference to `__cxa_allocate_exception’ D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:141: undefined reference to `__cxa_throw’ ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `Imf::(anonymous namespace)::tooMuchData()’: D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:93: undefined reference to `__cxa_allocate_exception’ D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:93: undefined reference to `__cxa_throw’ ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `Imf::(anonymous namespace)::invalidCode()’: D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:109: undefined reference to `__cxa_allocate_exception’ D:\Projects.CPP\Engine5\svn\trunk\Dependencies\FreeImage/D:/Projects.CPP/Engine5/svn/trunk/Dependencies/FreeImage/jni/../Source/OpenEXR/./IlmImf/ImfHuf.cpp:109: undefined reference to `__cxa_throw’ ./obj/local/armeabi-v7a/libfreeimage.a(ImfHuf.o): In function `invalidTableSize’: […]

在multithreading应用程序中使用JNI的正确方法

描述 在我的C ++应用程序类JNIXMLDocument中进行了一些JAVA方法调用。 在JNIXMLDocument类的构造函数中,我附加当前线程并将其设置为我的类成员JNIEnv* m_JavaEnv ,然后在所有方法中使用它。 同样在构造函数中,我试图找到我的JAVA类com/fido/android/framework/service/XMLDOMDocument并将其设置为类成员m_XMLDocumentClass并从类中获取该类对象并将其设置为类成员m_XMLDocumentObject 。 C ++代码 class JNIXMLDocument { /* Constructor **/ JNIXMLDocument() { /* Get JNI right version and set it. **/ jint interface_id = JNI_VERSION_1_2; #ifdef JNI_VERSION_1_2 interface_id = JNI_VERSION_1_2; #else interface_id = JNI_VERSION_1_1; #endif /* Trying to attach current thread. **/ int res = g_JavaVirtualMachine->GetEnv(&m_JavaEnv, interface_id); if (res […]

在C中为Android编译库

我已经安装了SDK,NDK,JDK和Cygwin。 我想知道是否需要编辑库代码以使它们为Android编译(armv7)。 我基本上需要为Android安装各种C应用程序,但它们都依赖于第三方库,如PCRE,OpenSSL等。 我的经验告诉我PCRE编译没有错误的Windows,但我们在这里谈论Android(运行Linux内核)。 我是否需要为库中的每个函数编写一个C包装器以满足JNI调用约定?

Android NDK wifi示例

我想在android中使用NDK在c代码的帮助下使用WIFI的function。 我不想将Java API用于WIFI。 我试过谷歌以及stackoverflow,但我没有任何例子。 我只是想知道,让我知道是否有可能? 我找到了一些用于WIFI的 Android API。 但我对实施没有任何了解。

如何在Android.mk的LOCAL_CFLAGS中动态获取当前编译器目标文件名?

我目前正在尝试使用Android的NDK构建本机模块。 我的项目包含几个源文件(例如: FILENAME .c),对于每个源文件,我需要在其CFLAGS( -DOPERATION_FILENAME )中声明一个定义。 为此,我需要动态获取Android NDK交叉编译器的当前目标文件的名称,并将其用于定义值。 我找不到任何有关如何执行此操作的信息,并且Makefile方式( 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_WITHIN_GMP \ -O2 \ -pedantic \ -fomit-frame-pointer \ -mfloat-abi=softfp \ -DOPERATION_`echo $* | sed ‘s/_$$//’` […]

解析开发/输入/事件触摸事件

我能够在Android手机上阅读dev / input / event *中的事件。 然而,它们是按照触摸事件给出的特定顺序的行代码。 3 53 216 3 54 444 3 48 40 3 50 5 0 2 0 0 0 0 如何将它们解析为有意义的事件,例如触摸x和y坐标? 或者长时间触摸等等然后我想将高级事件转换回类似代码以将它们插入事件队列中。 有没有人在C / C ++中有解析器代码? 任何帮助非常感谢。

如何将2D显示坐标映射到3D OpenGL空间

我正在开发一款移植到Android上的3D游戏,我希望在3D游戏过程中使用触摸事件。 我需要3D空间中的点,就在靠近剪裁平面上,但我能得到的只是来自Android显示器的2D坐标。 那么,有没有办法将这些(x,y)坐标映射到3D空间中的(x,y,z)坐标? 编辑 好吧,我正在制作一个赛车游戏,我想在课程中插入一些项目,具体取决于我点击的位置。 我有这个function: void racing_mouse_cb(int button, int state, int x, int y) { //parameters (x,y) are coords of a display set_ill_fish(get_player_data( local_player())->view); } 但是现在我在一个距离的玩家面前插入物品: void set_ill_fish(view_t view) { item_locs[num_items].ray.pt.x = view.plyr_pos.x; item_locs[num_items].ray.pt.z = view.plyr_pos.z – 5; item_locs[num_items].ray.pt.y = find_y_coord(view.plyr_pos.x, view.plyr_pos.z – 5) + 0.2; item_locs[num_items].ray.vec = make_vector(0, 1, 0); . . . […]

从C代码创建JAVA类

我在Java中有一个名为XMLDOMDocument类,这个类有一些方法CreateXML , AddNode , RemoveNode等。我在Java Native Interface的帮助下从C代码调用这个方法,但为了做到这一点,我传递给了我的JAVA类的C代码对象然后通过调用env->GetObjectClass(myclass)我从该对象获取我的类并调用JAVA类的方法。 我想知道我可以做同样的事情(调用JAVA方法)而不将我的类传递给C代码。 我可以在C代码中创建JAVA类,然后调用它的方法。 编辑 如果我的C代码中有JavaVM,我可以借助该Java VM在C代码中创建一个新的JAVA类实例。 编辑 我想我找到了一些有用的东西创建Java虚拟机 ,但我想知道必须要使用什么值#define USER_CLASSPATH ? 如果必须是包名com.fido.android.framework.service public class Prog { public static void main(String[] args) { System.out.println(“Hello World ” + args[0]); } } #include #define PATH_SEPARATOR ‘;’ /* define it to be ‘:’ on Solaris */ #define USER_CLASSPATH “.” /* where Prog.class is […]

在jni中运行的本机C代码与在Android中的shell中运行之间存在差异

我有一个原生的C Android应用程序。 首先,我将本机C代码构建到共享库中,jni将使用此库。 这个库使用一些内核可加载模块.ko,一些已经加载,一些必须通过“insmod”命令加载。 我还构建了一个使用该库的可执行文件,它通过命令行运行。 但是当它调用需要加载内核模块的函数时,执行与可执行文件相同工作的jni会失败。 那么他们之间有什么区别? 我是否需要授予我的应用程序一些权限?

JNI:无法获得数组长度

我遇到了下一个问题:在C代码中我无法对byte[] (jbyteArray)做任何事情。 在JNI中使用数组的所有函数都会导致JNI DETECTED ERROR IN APPLICATION: jarray argument has non-array type 。 我的代码出了什么问题? C: #include #include static jstring convertToHex(JNIEnv* env, jbyteArray array) { int len = (*env)->GetArrayLength(env, array);// cause an error; return NULL; } static JNINativeMethod methods[] = { {“convertToHex”, “([B)Ljava/lang/String;”, (void*) convertToHex }, }; JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv* env […]