2023-01-19 351
我在C/C ++中开发应用程序/程序.我更精通这两种语言,喜欢成为C ++开发人员.我想知道如何创建一个包含我所有C ++代码的Java程序.
我的意思是,我想在Java类中包装所有我的C ++代码(已经开发).但是无知的方法.
请发布有关将C ++集成在Java中的响应或方法/步骤.
(使用JNI是一种方式,但我无法在www上弄清楚它如何使用)
fyi,我使用Eclipse IDE开发.
我应该在项目工作区中包含哪些软件包?
如果要从Java调用C ++,您需要使用 jni – Java本机接口.
请注意,您将失去垃圾收集器的一些好处,因为它无法处理您的C ++对象,并且您的代码将不再可移植.
也许通过学习编写100%Java并将C ++留在后面,但这只是一个建议.
而不是JNI或JNI在自动包装器发生器(例如Swig甚至JNA)的一些帮助下,您可能会考虑将C/C ++和Java分开为单独的过程,并使用一些IPC和/或Java的Process抽象的形式,呼吁用C/C ++编写的程序.这种方法放弃了”包装”,因此从某种意义上说,这不是这个问题的答案,但请在投票之前继续阅读.我认为这是对某些情况下更广泛问题的合理答案.
这种方法的原因是,当您直接从Java调用C/C ++时, JVM面临本机代码中任何错误的风险.风险在某种程度上取决于您的本机代码是多少,以及您链接到第三方代码的数量(以及您对此类第三方代码的源代码有多少访问).
我遇到了一个情况,我必须从Java调用C/C ++库,而C/C ++库的错误导致JVM崩溃.我没有第三方源代码,因此我无法在本机代码中修复错误.最终的解决方案是调用链接到第三方库的单独的C/C ++程序.然后,Java应用程序在需要调用C/C ++的内容时与许多短暂的本机过程进行了呼叫.
如果本机代码有问题,则可以在Java中恢复/重试.如果本机代码被包装并从JVM过程中调用,则可以删除整个JVM.
这种方法具有性能/资源消费含义,可能不适合您的应用程序,但在某些情况下值得考虑.
具有行使C/C ++代码功能的单独应用程序可能可作为独立实用程序和测试有用.并且具有一些干净的命令行或IPC接口可以减轻与其他语言的未来集成.
作为另一种选择,您可以进入本机信号处理如果您降低JVM流程完整性的风险喜欢并坚持包装解决方案.
您不能”仅包装”,您必须写一些C/C ++胶.
对于初学者, swig 可以为您完成大部分作品.
以上所述是小编给大家介绍的在Java内包装C/C ++,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/25764.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日
扫码二维码
获取最新动态