2023-01-21 241
我一直在JNI中通过@tulskiy的建议在JNI中存储C Pointers 通过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铸造(无论平台容量如何,存储一个指针).
以上所述是小编给大家介绍的通过JNI传递C和Java之间的指针,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26208.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态