将现有的C++(.h和.cpp)文件转换为适用于Android的java

Vik*_*yan 5 c++ java android

我正在Eclipse下为Android开发.我有一些c ++(.h和.cpp)文件,我希望在我的Android应用程序中使用.我已经使用Java Native Interface阅读了C/C++中的Programmming,现在我知道如何制作.so文件并将其导入Android.但主要问题是:

是否有任何工具可以将c ++(.h和.cpp)文件转换为java样式文件,我可以编译和创建.so库?我听说过JNI - javah和javac可以帮助我,如果他们可以如此如何?


编辑:

javah是一个有用的工具,可以从给定的类创建C样式的头文件.生成的头文件以C语言描述类文件.虽然可以手动创建头文件,但这几乎总是一个坏主意.javah确切地知道Java类型和对象如何映射到C类型.例如,Java中的int映射到C中的long,而Java中的long映射到本机代码中的64位值_int64.如何使用这个javah?

任何人都有如何使用Android应用程序中的.so库中实现的函数?如果有人有代码示例或有用的文章链接,请给.

提前致谢 !

oli*_*erg 7

您不"将C++文件转换为Java样式".您需要围绕现有的C++代码创建JNI包装器.这个JNI包装器实际上是可以由Java调用的C++代码.

通过包装器,我的意思是您不必修改现有的C++代码库.这个包装器,或更好地说这种绑定通常应该非常薄.包装器代码仅用于公开现有功能,而不是实现它们.最好将实现保留在(可移植)C++代码库中.

如果代码库不是太大,那么我建议你手动编写这个包装器,如 JavaTM Native Interface Programmer's Guide and Specification中所述.

现在,如果您尝试绑定大型库,则可能会出现问题.所以,关于工具,我没有使用它,但看看SWIG和相关的SWIG Java文档.

根据主页描述,这是你要求的:

SWIG通常用于解析C/C++接口并生成[Java,Python,PHP,...]调用C/C++代码所需的"粘合代码".

javah在某些情况下很有用,但它不是你要求的.它从Java类中的本机声明中提取JNI样板代码.关于javac,它是Java编译器,这是无关紧要的.