草庐IT

check_jni

全部标签

Java JNI - 将 C 中分配的资源与 java 对象相关联?

我想在C中分配一些内存并保持它与java对象实例相关联,如下所示:voidconfigure(JNIEnv*object,jobjectobj,....){char*buf=newchar[1024];//associatedwithsomehow}然后在java对象被垃圾回收时释放内存-我可以通过从java对象的finalize()方法调用JNI函数来做到这一点。问题是,如何将C指针与java对象相关联?在对象中保留一个long字段并将指针转换为long?有没有更好的办法? 最佳答案 一般来说,如果要将指针从C传输到Java,建议

c++ - BOOST_CHECK_EQUAL 与 pair<int, int> 和自定义运算符 <<

当尝试执行BOOST_CHECK_EQUAL(pair,pair)时,gcc没有找到pair的流运算符,尽管声明了它。有趣的是std::out找到了运算符。ostream&operator&p){s';returns;}BOOST_AUTO_TEST_CASE(works){pairexpected(5,5);pairactual(5,5);std::coutexpected(5,5);pairactual(5,5);BOOST_CHECK_EQUAL(actual,expected);}这不会编译错误:...instantiatedfromhere../boost-atp/relea

c++ - 类型特征 : Check if reference member variable is static or not

我想检查一个类的成员变量是否是静态的。使用std::is_member_pointer适用于除引用成员之外的所有类型。#includestructA{intfoo;};structB:A{};structC{staticintfoo;};structD:C{};structE{int&foo;};structF{staticint&foo;};static_assert(std::is_member_pointer::value,"No");static_assert(std::is_member_pointer::value,"No");static_assert(!std::is_

c++ - 自动配置/自动制造 : How to avoid passing the "check" option to AC_CONFIG_SUBDIRS

我正在使用Autoconf构建我的C++项目。它使用第三方代码,这些代码也是在Autoconf/Automake的帮助下构建的。所以在我的configure.ac中有以下行:AC_CONFIG_SUBDIRS([subdirectoryname])一切正常,但我还使用该功能让测试在执行makecheck时自动进行-这也是由第三方代码完成的。因为这些测试需要一段时间,所以每次我想测试自己的代码时都执行它们很烦人。那么有没有办法避免check选项被传递给子目录的Makefile呢?更新:覆盖check-recursive似乎不是一个选项,因为我的顶级Makefile.am看起来(或多或少)

android - 在 android 上使用 JNI 进行图像解码和操作

背景在某些应用程序中,重要的是在没有OOM的情况下快速处理大图像。为此,JNI(或渲染脚本,遗憾的是缺少文档)可能是一个不错的解决方案。过去,我曾成功地使用JNI旋转巨大的位图,同时避免了OOM(链接here、here和here)。这是一次不错的(但令人讨厌的)体验,但最终它奏效了。问题android框架有很多处理位图的函数,但是我不知道JNI端是什么情况。我已经知道如何将位图从android的“java世界”传递到“JNI世界”并返回。我不知道我可以在JNI端使用哪些函数来帮助我处理位图。我希望能够在JNI上做所有的图像操作(包括解码),这样我就不用担心大图像呈现时的OOM,并且在这

java - 通过 JNI 获取 Java ByteBuffer 的指针

如何获取指向JavaByteBuffer内部数组的指针?JNIEXPORTvoidJNICALLtest(JNIEnv*env,jobjectthiso){jclasscls=env->FindClass("java/nio/ByteBuffer");jmethodIDaloc=env->GetStaticMethodID(cls,"allocateDirect","(I)Ljava/nio/ByteBuffer;");jobjectobj=env->CallStaticObjectMethod(cls,aloc,1000);}PS:我这样做是为了共享Java和C++使用的内存。

c++ - std::error_code,my_error::check_block == my_error::validate && my_error::accept_block == my_error::validate

我正在使用std::error_code并定义和注册了一堆错误(使用枚举类)。我有一个非常通用的错误,现在称为my_error::validate,但我想在我的库中提供更具体的版本。通常人们会想要使用:if(ec==bc::error::validate)//...但是有时他们可能希望看到与该std::error_code关联的特定错误或打印错误消息。//ec.message()says"check_block()failedtodoXYZ"assert(ec==bc::error::check_block);我希望能够启用如下功能:if(ec==bc::error::validate

java - JNI 释放内存以避免内存泄漏

所以我有这个从我的Java程序通过JNI调用的C++程序,代码如下:JNIEXPORTjstringJNICALLJava_com_entrust_adminservices_urs_examples_authn_LdapAuthenticator2_takeInfo(JNIEnv*env,jobjectobj,jstringdomain,jstringid,jstringidca,jstringpassword){constchar*nt_domain;constchar*nt_id;constchar*nt_password;HANDLEhToken=0;boolaut=false

c++ - 对 `JNI_CreateJavaVM' linux 的 undefined reference

我正在尝试熟悉JNIAPI,但无法编译示例C++程序。这是我用来编译的命令,下面是我要编译的程序。我得到的错误是:/tmp/cczyqqyL.o:Infunction`main':/home/nc/Desktop/jni/simple/ctojava/callJava.cpp:16:undefinedreferenceto`JNI_CreateJavaVM'编译:g++-g-I/usr/lib/jvm/java-7-oracle/include/-I/usr/lib/jvm/java-7-oracle/include/linux/-L/usr/bin/java-L/usr/lib/jv

c++ - BOOST_CHECK 无法为自定义类型编译 operator<<

我写了这个非常简单的类,以便清楚我的问题是什么:classA{public:intx;A(inty){x=y;}booloperator==(constA&other)const{returnx==other.x;}};现在,如果我定义Afirst(1)和Asecond(1),对我来说BOOST_CHECK_EQUAL(first,second)应该通过是很自然的。然而,我在尝试这样做时遇到了50个错误,第一个听起来像:nomathforoperator 最佳答案 我确定了三种方法来解决operator的问题.第一种方式是提供一个o