我有一个用C语言编写的代码,用JNI加载带有CallStaticVoidMethod的java类。
我希望java类能够从C代码中调用特定的函数
我在网上看过一些例子,但是所有这些例子都加载了一个与java类无关的DLL(使用System.loadLibrary)。
java类是否可能从加载它的原始C代码中调用一个函数?
答案 0 :(得分:0)
是的,你可以,见https://stackoverflow.com/a/21734539/192373。关键是RegisterNatives()
JNI函数。
答案 1 :(得分:0)
如果您不想使用本机方法,您还可以将函数指针传递给Java并使用JNA来调用该函数。
(我用这个来调用Windows上的COM对象vtables中的函数,因为我不想为每个对象编写一个包装器DLL。不同之处在于我没有传递函数指针而是计算它们来自对象地址。)