我可以从JNI调用的C程序中调用C函数吗?

时间:2016-10-26 09:15:00

标签: java c java-native-interface

我已经对JNI进行过研究,我想我理解它是如何工作的,但我一直试图从JNI调用的另一个C函数调用C函数。

我有2个.c,HelloWorld和HelloWorld2,以及一个调用HelloWorld的java程序。 HelloWorld同时调用HelloWold2中定义的函数,但这会在执行时导致错误。

  

java:符号查找错误:/home/hduser/Desktop/final2/libhello.so:undefined symbol:helloworld

1 个答案:

答案 0 :(得分:1)

假设您有两个文件:

HelloWorld.c HelloWorld2.c

和HelloWorld应该从HelloWorld2中调用一些东西:

  • 将两者放入同一个共享库中
  • 将两者放入单独的共享库中,并确保HelloWorld与HelloWorld2
  • 链接

通过设置LD_LIBRARY_PATH确保共享库可见。

您可以在此处找到一些JNI示例:http://jnicookbook.owsiak.org/