当使用JNI在现有C++代码中进行移植时,请使用C或C++与JAVA进行接口
When using JNI to port in existing C++ code, use C or C++ to interface with JAVA?
我试图移植的现有代码是用C++实现的。在我编写了java包装器并在类上运行javah以获得.h头文件之后。。。。有"正确"的做事方式吗?我现有代码的相应包装器应该用C还是C++编写?
谢谢!
如果您使用普通的JNI,您可以用C和C++编写。重要的是,如果您使用C++,那么JNI函数(如void Java_com_yourpackage_YourClass_yourMethod(JNIEnv* env, ...)
)必须声明为extern "C"
,但AFAIKjavah
是自动执行的。
相关文章:
- 如果不是多个语句,请使用 if 语句
- Clang-CL 警告 strnicmp 已弃用,请使用 ISO C 并C++符合标准的名称_strnicmp
- 如果输入缓冲区不为空,请使用getchar.()检测Ctrl+d
- 如果 (QString.contains()) 不能正常工作,请使用 temp bool 变量进行更正
- 如果两个字符串是字谜,请使用unordered_map确定它们
- 使用SEND()之前,请使用Select()检查套接字
- 在编写平台依赖代码时,请使用constexpr代替宏
- 如果元组足够大,请使用sfinae启用方法
- 使用带有boost::program_options的多个源时,请使用最后一个存储值,而不是第一个存储值
- 特征错误:请使用密码保护您的最小值
- 要在不使用cout的情况下打印某些内容,请使用printf或puts()
- 在指定模板类之前,请使用模板类
- 在Fedora 20 x86_64上编译32位Linux应用程序时,请使用SNDFILE库
- C++类型擦除,请使用 std::function 捕获单个类的多个方法
- 对于几乎相似的内容,请使用qml文件
- 如何读取一个不完整的表单字段,请使用C++
- 无法读取文件以进行文件处理,请使用 boost 库获取文件路径
- 如果要在名称列表中搜索名称,请使用QMap或Qlist容器
- 当使用JNI在现有C++代码中进行移植时,请使用C或C++与JAVA进行接口
- 如果可用,请使用模板参数的实现,否则为默认值