我一直遵循本文中@tulskiy的建议,通过JNI将Java中的c指针存储在Java中通过JNI在C和Java之间传递指针
诀窍是将指针转换为jlong。所以从c我有return (jlong) ptr;
我返回一个jlong(始终为64位),因为我希望我的代码在64位和32位系统上都能工作。64位计算机上64位指针在内存中的大小为64,而在32位计算机上,内存中指针的大小为32位。
问题是在32位计算机上,我收到一个编译器警告,提示“从不同大小的指针转换为整数”。如果我有警告,则该警告消失。 return (jlong) (int32_t) ptr;
但是,此代码对64位计算机不好。
我想在没有警告的情况下编译我的代码,以便在有合法警告的情况下看到它。有人有主意吗?
谢谢,本
C中有各种方便的整数类型。您想要的一种可能是intptr_t或uintptr_t:
return (jlong)(intptr_t) ptr;
区别?
intptr_t
到jlong
和背部是保证提供的工作jlong
是够大(这你隐含假设它是无论如何)。uinttptr_t
到jlong
和背部避免符号扩展,但未定义的行为,如果uintptr_t
是太大,不适合在jlong
(但所有的“健全”的架构/编译器只需使用两个互补算术)我需要在python脚本和java引擎之间通过stdin和stdout进行一些进程间通信。 我是否可以将python对象转换为JSON,并将整个对象转换为字符串,通过stdin传递到Java,然后将该字符串转换回JSON进行处理,然后将其作为通过字符串转换的JSON对象返回到python 我只想知道是否可以通过stdin发送一个JSON对象,或者有什么可能的方法可以做到这一点
问题内容: 我有一个C结构。 我想将数据从Java映射到C结构,如何使用JNI进行处理?我不会编程Java代码。Java程序员只是想知道他应该以哪种形式向我发送数据?他是否应该期待更多细节 我目前正在通过用包含2列的CSV文件填充结构实例来测试我的代码。 我也想从我的C代码向Java应用程序返回3个double值。 问题答案: 向您的Java程序员提供以下声明: 在您的C代码中,您将能够使用传递的
问题内容: 我正在努力实现以下目标: 1)我在Java端有一个字节数组,代表一个图像。 2)我需要授予我的本机代码访问权限。 3)本机代码使用GraphicsMagick解码此图像,并通过调用resize创建一堆缩略图。它还计算图像的感知哈希,它可以是矢量或unint8_t数组。 4)一旦我将这些数据返回到Java端,不同的线程将读取它。缩略图将通过HTTP上传到某些外部存储服务。 我的问题是:
问题内容: 我的Android应用程序中的C代码有一个复杂的结构,我想在Java端使用它。我已经在Google和stackoverflow上进行了一些研究,因此我从C结构创建了Java类,但是现在如何在Java中获取它。 我已经找到了有关在类中创建指针并在C端使用它的信息: 但是我不明白它是如何工作的… 在上面,您可以找到我到目前为止所做的……还不算太多!在C端: 在Java方面: 编辑:我想补充
问题内容: 抱歉,如果我的问题是菜鸟。我正在使用pgsql 8.4运行Django 1.2,并且需要在从用户处获得输入后运行Java程序,进行一些计算并将结果返回给用户。 我是否可以知道在Java和Python Django之间传递数据的最佳方法是什么,以便解决上述情况?我听说过Jython,但是根据Django文档,它需要扩展名jython- Django,但目前不支持django1.2.x。我
问题内容: 如何获得指向Java ByteBuffer内部数组的指针? PS:我这样做是为了共享Java和C ++使用的内存。 问题答案: ByteBuffer必须是直接起作用的字节缓冲区。