Привет Я создаю библиотеку cs-оболочкой openssl для использования с JNI. Мое имя исходного файла c: rsa.c, а имя файла заголовка JNI - OpensslRSA.h, которое содержится в каталогах JAVA_HOME/include и JAVA_HOME/include/linux. Я использую синтаксис ниже для создания этой библиотеки.
GCC -shared -fpic -o librsa.so -I/USR/местные/jdk1.7.0_45/включают -I/USR/местные/jdk1.7.0_45/включать/Linux rsa.cвопросов при создании библиотеки c linux
Эта программа использует с ниже заголовочных файлов
#include <jni.h> #include <stdio.h> #include <OpensslRSA.h> #include <openssl/pem.h> #include <openssl/ssl.h> #include <openssl/rsa.h> #include <openssl/evp.h> #include <openssl/bio.h> #include <openssl/err.h>
, но когда я использую это из Java программы, как показано ниже
Java -Djava.library.path =/дом/Агарвал/тест/c_tests/opensslrsalib OpensslRSA
то он дает ниже ошибку
Java: символ ошибки поиска: /home/agarwal/test/c_tests/opensslrsalib/librsa.so: не определено символ: BIO_new_mem_buf
Может ли тело, дайте мне знать, что я должен сделать для этого, как все файлы заголовков, используемых существуют in/usr/include в соответствии с используемым в c источником
Вы в Windows? Если это так, я не считаю, что использует 'JAVA_HOME' для библиотеки' PATHs'. – jww