【发布时间】:2015-05-04 10:31:40
【问题描述】:
您好,我正在创建一个可与 JNI 一起使用的 openssl 包装器 c 库。我的 c 源文件名为 rsa.c,JNI 头文件名为 OpensslRSA.h,它包含在 JAVA_HOME/include 和 JAVA_HOME/include/linux 目录中。我使用下面的语法来创建这个库。
gcc -shared -fpic -o librsa.so -I/usr/local/jdk1.7.0_45/include -I/usr/local/jdk1.7.0_45/include/linux rsa.c
这个c程序使用下面的头文件
#include但是当我从 java 程序中使用它时,如下所示
java -Djava.library.path=/home/agarwal/test/c_tests/opensslrsalib OpensslRSA
然后它给出以下错误
java:符号查找错误:/home/agarwal/test/c_tests/opensslrsalib/librsa.so:未定义符号:BIO_new_mem_buf
任何人都可以让我知道我应该怎么做,因为所有使用的头文件都存在于 /usr/include 中,就像在 c 源代码中使用的那样
【问题讨论】:
-
您在 Windows 上吗?如果是这样,我不相信将
JAVA_HOME用于库PATHs。
标签: java c openssl java-native-interface shared-libraries