java - 从 C++ 生成 JNI Bridge 和 Java 接口
问题描述
我知道在给定Java实现的情况下可以生成JNI,javac
但是有没有办法做相反的事情(“ cjava
”)?
所以,如果我有这样的事情:
mypackage/mylib.h
:
void helloWorld();
mypackage/mylib.c
:
#include <iostream>
void helloWorld() {
std::cout << "Hello World!" << std::endl;
}
不应该像这样生成JNI吗
mylib-jni.c
:
#include "mypackage/mylib."
JNIEXPORT jlong JNICALL Java_mypackage_helloWorld() {
helloWorld();
}
和
Mylib.java
:
package mypackage;
public class Mylib {
public native void helloWorld();
}
等等
不知何故,我不会偶然发现这样的事情。
解决方案
试试antlr。它有一个 C++ 语法文件,让您可以完全控制。
对于 java 的生成,您可以使用我 hust 发布的 cgV19。我的图片是:
用 antlr 解析 C++ 文件并用它为 cgV19 构建模型加载器。cgV19 使用这个 C++ 解析器来加载一个模型给 cgV19 一个可以从那个模型生成你的 java 文件的插件
推荐阅读
- mongodb - Rocket.Chat Meteor 服务器:发布消息后调用方法?
- reactjs - 未能将 React 渲染道具组件重构为 2 个组件
- typescript - 打字稿:“关注”条件类型
- mpi - 使用 mpirun 执行我的程序会大大降低性能
- vba - 将 PreviousControl 属性与嵌套的子窗体和控件一起使用
- image -
- angular - Ionic 4 - 使用 android 键盘“enter/go”提交表单
- python - 在函数和类之外调用 user_name 变量
- scala - 如何将文本文件的第一行作为标题并在 spark scala 中跳过第二行
- java - Spring Cache - @CachePut 和 @CacheEvict 之间的真正区别