从JNI声明函数

时间:2012-12-28 19:55:25

标签: java jvm java-native-interface

有没有办法在不创建dll的情况下从jni创建本机函数?我的意思是像在python中http://docs.python.org/2/extending/embedding.html 第5.4节。扩展嵌入式Python

我不想使用dll导出的函数。

此致

3 个答案:

答案 0 :(得分:1)

您可以在本机应用程序中嵌入VM,从C / C ++调用Java,然后从Java回调回C / C ++。请参阅Invocation API in JNI documentation。这样就不需要动态链接(DLL)。您还可以通过使用本机方法(例如,使用ASM)生成字节码,然后使用RegisterNatives注册所需的任何C / C ++函数指针,在运行时动态生成类。

答案 1 :(得分:0)

从技术上讲,这是可能的。

大约6或8年前,我看到了一个C ++实现(它出现在codeproject网站上),它创建了一个JVM并且访问了Java类。不是很受欢迎,因为很好的理由,很多人在这里列举,但是可能。

我强烈建议做另一方,正是你不想要的:java调用dll左右,但由于很多原因,但由你决定...

答案 2 :(得分:0)

也许JNA可以做你想要的?