草庐IT

check_jni

全部标签

android - 如何使用 JNI 代码正确导入 Android 库?

背景我制作了一个使用JNI处理位图的小型SDK(链接here)。它只有2个项目:一个示例项目(演示SDK的用法)和SDK本身。SDK项目是一个Android项目,其中包含一些C/C++代码。问题出于某种原因,即使我创建了项目,一切都很顺利,现在我尝试获取库项目并将其导入Eclipse,然后打开我制作的CPP文件,我明白了上面有很多错误,例如:问题为什么会发生?如何正确导入项目?我可以帮助使用它的人顺利导入它吗?我试图用JNI创建一个全新的项目,只是(小心地)复制了我的库中的文件,它编译得很好,但这不是导入项目的好方法...... 最佳答案

java - JNI - 线程和 jobject 的问题

我调用了一个native程序,该程序创建了另一个线程,该线程将自身附加到JVM。现在我想访问JVM的方法,但它失败了。这是代码:////Thisisthenativefunctionthatgetscalledfirst.//itcreatesanotherthreadwhichruns,andalsocallstheprinting-methodsinmy//javaapplet.//JNIEXPORTvoidJNICALLJava_EIGC_1Applet_app_1native_native_1start(JNIEnv*jenv,jobjectjob){printAppletCo

c++ - JNI 使用多线程从 C++ 调用 Java

我正在做一个项目,我从C++代码(使用JNI)调用Java函数,但我遇到了多线程问题。我想调用Java搜索函数,每次调用我都想创建一个单独的线程。我有一个单例MainClass和嵌套的Query类。Query类继承自QThread。代码看起来像这样MainClass::MyQueryquery("");query.LaunchQuery();//functionsofQueryvoidMainClass::MyQuery::LaunchQuery()const{this->start();}voidMainClass::Query::run(){constMainClass&mainC

C++ 11 正则表达式 : checking if string starts with regex

我正在使用C++11的支持,并想检查字符串的开头是否与正则表达式匹配。[如果有帮助,我可以切换到Boost,但我的印象是它们基本相同。]显然,如果我可以控制表达式的实际文本表示,我可以只粘贴^在它的开头作为anchor。但是,如果我只有一个regex怎么办?(或basic_regex)对象?我可以修改它代表的正则表达式来添加anchor吗?或者我必须使用regex_search,得到结果,检查是否从位置0开始? 最佳答案 您可以在使用regex_search时添加std::regex_constants::match_continu

c++ - SIMD/SSE : How to check that all vector elements are non-zero

我需要检查所有vector元素是否非零。到目前为止,我找到了以下解决方案。有一个更好的方法吗?我在Linux/x86_64上使用gcc4.8.2,指令高达SSE4.2。typedefcharChrVect__attribute__((vector_size(16),aligned(16)));inlinebooltestNonzero(ChrVectvect){constChrVectvzero={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};return(0==(__int128_t)(vzero==vect));}更新:上面的代码被编译为以下汇编代码(当编译为非

java - JNI、垃圾收集和指针——Java/C++ 谁应该做什么?

我们在C++中有指针的概念。现在,如果我们在C++中分配一些内存并将其作为对象引用(使用JNI)传递给Java,那么谁应该释放它以及谁将释放它。会不会1.)垃圾收集器在Java中自动执行?2.)我们需要在包装的JNI类finalize方法中显式删除指针吗?3.)或者我们应该忘记finalize(因为finalizers不可信),Java负责调用C++代码来删除对象4.)或者是否有一些方法可以直接在Java本身中释放内存(不确定Java如何解释C++指针以删除它)?这样做的最佳实践是什么,反之亦然(当我们将对象从Java传递到C++时)? 最佳答案

java - 从 JNI/C++ 代码使用 java 套接字

我有一个java应用程序,它创建一个套接字来与服务器进程对话,例如newjava.net.Socket(Stringhost,intport)。这个应用程序包含一堆遗留的c++代码,需要从该服务器吸取大量数据并进行处理。目前这是通过让native代码创建自己的套接字并连接到服务器来实现的,例如:sock=socket(AF_INET,SOCK_STREAM,0);structhostent*hp=gethostbyname(host);if(!hp){unsignedlongaddr=inet_addr(host);hp=gethostbyaddr((char*)&addr,sizeo

c++ - 了解 MSVC++ 中的 "Buffer Security Check/GS"编译器选项

我最近惊讶地注意到,在MSVC++2010中使用/GS(启用缓冲区安全检查)进行编译似乎在某些情况下对运行时性能具有不可忽略的影响。有没有人有过这样的经历??对于大型科学风格的应用程序(网格生成库),似乎使用/GS-进行编译可以使我的几个大型基准测试的运行时间提高近10%测试套件(“大”是>=1秒的运行时间)。/GS在MSVC++2010中的所有优化级别默认处于启用状态。我必须承认,我以前从未过多关注过这个选项,我想澄清一下它的实际作用。在线documentation似乎广泛谈论字符串缓冲区,但由于我不在任何地方使用string或char[]缓冲区,我一定遗漏了一些东西。这段(来自在线

java - 如果调用 JNI DeleteGlobalRef(),相应的 java 对象是否会被垃圾回收?

我的意思是,如果我在C++中创建一个全局引用jobject,然后将其传递给一些Java代码,并删除调用DeleteGlobalRef(),那么底层Java对象可能会立即被垃圾回收,因此任何future已经引用该对象的Java代码可能会返回NullPointerException?具体来说,如果我有一些C++代码执行类似这个简化示例的操作:staticjobjectmyObjGlobalRef;staticJNIEnv*env=/*calltocreateaJVMandgettheJNIenv*/;jobjectReturnMyObj(){/*>*/jobjectlocalObj=env

C#/WMI : How to remotely check if Windows has updates ready to be installed?

我尝试在谷歌上找到解决方案,但运气不佳,也许这里有人知道该怎么做? 最佳答案 不确定您是否可以远程执行此操作,但您可以“伪造”它。查看WindowsUpdateAgentAPI的MSDN文档,特别是名为Searching,Downloading,andInstallingUpdates的文章.其中包含一个脚本,其中列出了准备安装的更新。如果你拿走那部分脚本并将其修改为将列表写入文件,那么你可以将脚本复制到远程计算机,远程执行脚本,然后读取文件(最后删除文件和脚本从远程计算机进行清理)。您可以使用WMI远程执行脚本,有关从C#执行此操